⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conversationmanager.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
                    {
                        Imps.Client.Core.Conversation conversation = enumerator.get_Current();
                        if ((conversation.CurrentDialog != null) && (conversation.CurrentDialog.To == req.Message.From.RawValue))
                        {
                            return conversation;
                        }
                    }
                }
                finally
                {
                    enumerator.Dispose();
                }
                return null;
            }
        }

        public static string GetContactMessageHistoryPath(Imps.Client.Core.User currentUser, Imps.Client.Core.Contact contact)
        {
            string path = Path.Combine(currentUser.PersistentManager.BaseDirForHistory, contact.Uri.ToUniqueString() + ".xml");
            string text2 = Path.Combine(currentUser.PersistentManager.BaseDirForHistory, currentUser.Sid.ToString() + "_" + contact.Uri.ToUniqueString() + ".xml");
            if (!File.Exists(text2) && File.Exists(path))
            {
                File.Move(path, text2);
            }
            return text2;
        }

        public static string GetSendMessageErrorDes(SipResponseReceivedEventArgs e, bool isMulitiConversation)
        {
            string text = string.Empty;
            int statusCode = e.Response.Message.StatusCode;
            if (statusCode <= 0x19d)
            {
                switch (statusCode)
                {
                    case 0x194:
                        text = "接收方不存在";
                        if (!isMulitiConversation)
                        {
                            text = text + string.Format(",可能对方已经退订了{0}服务!", AppDictionary.ShortEnglishName);
                        }
                        return text;

                    case 0x195:
                        return text;

                    case 410:
                        return text;

                    case 0x19d:
                        return text;
                }
                return text;
            }
            if (statusCode != 0x1e6)
            {
                if (statusCode != 500)
                {
                    if (statusCode != 520)
                    {
                        return text;
                    }
                    return "对方离线消息存储空间满!";
                }
            }
            else
            {
                text = "您今天发送短信的数量超过限额!";
                try
                {
                    if (!string.IsNullOrEmpty(e.Response.Message.Body.Trim()))
                    {
                        XmlDocument document = new XmlDocument();
                        document.LoadXml(e.Response.Message.Body.Trim());
                        if (document.DocumentElement.ChildNodes[0].Attributes[0].Value == "sms-monthly-limit")
                        {
                            text = "您这个月发送短信的数量超过限额!";
                        }
                    }
                }
                catch (Exception exception)
                {
                    ClientLogger.WriteException(exception);
                }
                return text;
            }
            return "服务器内部错误 请稍后重试!";
        }

        public static string GetShareContentOptionString()
        {
            if (_scOptionString == null)
            {
                ShareContentType shareContentType = Imps.Client.Core.Configuration.FixedClientSetting.ShareContentType;
                if (shareContentType == ShareContentType.All)
                {
                    _scOptionString = "block;relay;p2p;p2pV2;relayV2";
                }
                else
                {
                    StringBuilder builder = new StringBuilder();
                    builder.Append("block;p2p");
                    if ((shareContentType & ShareContentType.RelayAndBlock) != ShareContentType.None)
                    {
                        builder.Append(";relay;relayV2");
                    }
                    if ((shareContentType & ShareContentType.P2P) != ShareContentType.None)
                    {
                        builder.Append(";p2pV2");
                    }
                    _scOptionString = builder.ToString();
                }
            }
            return _scOptionString;
        }

        public Imps.Client.Core.Conversation OpenConversation(List<Imps.Client.Core.Contact> contacts)
        {
            return this.OpenConversation(null, contacts);
        }

        public Imps.Client.Core.Conversation OpenConversation(Imps.Client.Core.Contact contact)
        {
            return this.OpenConversation(contact.Uri.Raw, contact);
        }

        public Imps.Client.Core.Conversation OpenConversation(string to, List<Imps.Client.Core.Contact> contacts)
        {
            return this.OpenConversation(to, null, true, contacts);
        }

        public Imps.Client.Core.Conversation OpenConversation(string to, Imps.Client.Core.Contact contact)
        {
            List<Imps.Client.Core.Contact> contacts = new List<Imps.Client.Core.Contact>();
            contacts.Add(contact);
            return this.OpenConversation(to, null, true, contacts);
        }

        internal Imps.Client.Core.Conversation OpenConversation(string to, long? callId, bool invite, List<Imps.Client.Core.Contact> contacts)
        {
            Imps.Client.Core.Conversation conv = new Imps.Client.Core.Conversation(base.Owner, callId);
            this.Conversations.Add(conv);
            Dialog item = new Dialog(conv);
            item.To = to;
            if (contacts.get_Count() == 1)
            {
                item.InnerAddParticipants(new Imps.Client.Core.Contact[] { contacts.get_Item(0) });
                item.IsMulitiConversation = false;
            }
            if (invite)
            {
                if (contacts.get_Count() > 1)
                {
                    for (int i = contacts.get_Count() - 1; i >= 0; i--)
                    {
                        if (!contacts.get_Item(i).EnableMultiIM)
                        {
                            contacts.Remove(contacts.get_Item(i));
                        }
                    }
                }
                if (contacts.get_Count() != 0)
                {
                    item.Status = DialogStatus.Inviting;
                    if (contacts.get_Count() == 1)
                    {
                        item.To = contacts.get_Item(0).Uri.Raw;
                        if (contacts.get_Item(0).EnableInvite)
                        {
                            item.AsyncSendInvite();
                        }
                        else
                        {
                            item.Status = DialogStatus.None;
                        }
                    }
                    else
                    {
                        item.IsMulitiConversation = true;
                        conv.AsyncCreateTemporaryGroup(contacts);
                    }
                }
            }
            conv.Dialogs.Add(item);
            return conv;
        }

        internal Imps.Client.Core.Conversation OpenConversation(string to, long? callId, bool invite, Imps.Client.Core.Contact contact)
        {
            List<Imps.Client.Core.Contact> contacts = new List<Imps.Client.Core.Contact>();
            contacts.Add(contact);
            return this.OpenConversation(to, callId, invite, contacts);
        }

        private void Owner_MessageReceived(object sender, SipRequestReceivedEventArgs e)
        {
            try
            {
                switch (e.Request.Message.Method)
                {
                    case "I":
                        this.DoReceiveInvite(e.Request);
                        return;

                    case "M":
                        break;

                    default:
                        return;
                }
                this.DoReceiveMessage(e.Request);
            }
            catch (Exception exception)
            {
                ClientLogger.WriteException(exception);
            }
        }

        private void owner_StatusChanged(object sender, UserSatusChangedEventArgs e)
        {
            switch (e.NewStatus)
            {
                case UserAccountStatus.Logoff:
                case UserAccountStatus.Disconnected:
                case UserAccountStatus.None:
                    this.Clear();
                    return;
            }
        }

        internal void RaiseFindConversationForm(Imps.Client.Core.Conversation conv, Imps.Client.Core.Contact contact, string message)
        {
            if ((this.FindConversationForm != null) && ((conv != null) && (conv.CurrentDialog != null)))
            {
                conv.CurrentDialog.WaitReceiveRequest();
                try
                {
                    AutoResetEvent auto = new AutoResetEvent(false);
                    FuncDispatcher.InvokeEventHandlerInUiThread<FindConversationFormEventArgs>(this, this.FindConversationForm, new FindConversationFormEventArgs(conv, auto, contact, message));
                    auto.WaitOne(0x7530, true);
                }
                finally
                {
                    conv.CurrentDialog.ResumeReceiveRequest();
                }
            }
        }

        internal void RegisterKeepAlive()
        {
            if (!GlobalTimer.IsHandlerRegistered(new EventHandler(this.AsyncSendKeepAlive)))
            {
                GlobalTimer.Register(new EventHandler(this.AsyncSendKeepAlive), 0xbb8);
            }
        }

        public List<Imps.Client.Core.Conversation> Conversations
        {
            get
            {
                return this._conversations;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -