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

📄 contactlist.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 5 页
字号:
                return false;
            }
            if ((!uri.IsValid || !uri.Belongs(IicUriType.Sip)) || uri.IsVodafoneUri)
            {
                return false;
            }
            if (this.Contacts[uri] != null)
            {
                return false;
            }
            if (uri.Sid == base.Owner.Uri.Sid)
            {
                return false;
            }
            SipRequest req = base.CreateSipRequest("S");
            req.Message.AddHeader(new SipcEventHeader("AddChatFriend"));
            req.Context = op;
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
                writer.WriteStartElement("contacts");
                writer.WriteStartElement("chat-friends");
                writer.WriteStartElement("chat-friend");
                writer.WriteAttributeString("uri", uri.Raw);
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            tw.Dispose();
            ErrorHelper.HandleSendRequestErrorAndTimeout(req);
            req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AddChatFriend);
            base.SendSipMessage(req);
            return true;
        }

        public bool AsyncAddGroup(string name, AsyncBizOperation op)
        {
            name = name.Trim();
            if (name.Length == 0)
            {
                base.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.ContactGroup.MsgAddGroupNameEmpty), op);
                return false;
            }
            if (name.Length > 0x40)
            {
                base.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.ContactGroup.MsgAddGroupNameTooLong), op);
                return false;
            }
            if ((name == StringTable.ContactGroup.ChatFriendGroup) || (name == StringTable.ContactGroup.UnGrouped))
            {
                base.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.ContactGroup.NotAllowFixedGroupName), op);
                return false;
            }
            lock (base.Owner.ContactList.Groups.SyncRoot)
            {
                using (IEnumerator<ContactGroupBase> enumerator = base.Owner.ContactList.Groups.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        Imps.Client.Core.ContactGroup group = (Imps.Client.Core.ContactGroup) enumerator.get_Current();
                        if (group.Name == name)
                        {
                            base.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.ContactGroup.NotAllowSameName), op);
                            return false;
                        }
                    }
                }
            }
            SipRequest req = base.Owner.CreateSipRequest("S");
            req.Message.AddHeader(new SipcEventHeader("CreateBuddyList"));
            op.ContextForBiz = name;
            req.Context = op;
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
                writer.WriteStartElement("contacts");
                writer.WriteStartElement("buddy-lists");
                writer.WriteStartElement("buddy-list");
                writer.WriteAttributeString("name", name);
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            tw.Dispose();
            ErrorHelper.HandleSendRequestErrorAndTimeout(req);
            req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncAddGroup);
            base.SendSipMessage(req);
            return true;
        }

        private bool AsyncAddMobileBuddy(string mobileNo, string localName, string targetGroupIdArr, bool invite, AddBuddyExtraData extraData, AsyncBizOperation op)
        {
            <>c__DisplayClassc classc;
            if (!ImpsHelper.IsCmccMobileNo(mobileNo))
            {
                LogHelper.LogFatalError("手机号不正确");
                base.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.MsgInvalidMobileNo), op);
                return false;
            }
            IicUri iicUri = IicUri.CreateTelUri(mobileNo);
            Imps.Client.Core.Contact contact = this.Contacts.FindContact(iicUri.Raw);
            if (contact != null)
            {
                int? relationStatus = contact.RelationStatus;
                if ((relationStatus.GetValueOrDefault() == 1) && relationStatus.get_HasValue())
                {
                    base.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(string.Format(StringTable.Contact.ContactAlreadyExistInBuddy, contact.DisplayName)), op);
                    return false;
                }
                if (string.IsNullOrEmpty(localName))
                {
                    localName = contact.PersonalInfo.Name.UserSetDataProposedValue;
                }
            }
            if (contact == null)
            {
                if (((this.Buddies.Count + this.MobileBuddies.Count) + this.PenddingAddBuddyRequestUri.get_Count()) >= base.Owner.Configuration.SystemSetting.BuddyListSetting.MaxBuddyNum)
                {
                    base.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.MsgAddMobileBuddyLimitExceeded), op);
                    return false;
                }
                if (this.PenddingAddBuddyRequestUri.Contains(iicUri))
                {
                    this.PenddingAddBuddyRequestUri.Add(iicUri);
                }
            }
            SipRequest req = base.Owner.CreateSipRequest("S");
            req.Message.AddHeader(new SipcEventHeader("AddMobileBuddy"));
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
                writer.WriteStartElement("contacts");
                writer.WriteStartElement("mobile-buddies");
                writer.WriteStartElement("mobile-buddy");
                writer.WriteAttributeString("uri", iicUri.ToString());
                if (localName != string.Empty)
                {
                    writer.WriteAttributeString("local-name", localName);
                }
                writer.WriteAttributeString("buddy-lists", targetGroupIdArr);
                writer.WriteAttributeString("desc", extraData.WhoAmI.Trim());
                writer.WriteAttributeString("invite", invite ? "1" : "0");
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            ErrorHelper.HandleSendRequestErrorAndTimeout(req);
            req.WaitResponseTimeout += delegate (object sender, EventArgs e) {
                if (this.PenddingAddBuddyRequestUri.Contains(iicUri))
                {
                    this.PenddingAddBuddyRequestUri.Remove(iicUri);
                }
            };
            req.SendMessageFailed += new EventHandler<FailedEventArgs>(classc, (IntPtr) this.<AsyncAddMobileBuddy>b__a);
            req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(classc, (IntPtr) this.<AsyncAddMobileBuddy>b__b);
            base.SendSipMessage(req);
            return true;
        }

        public void AsyncAddToBlackList(string[] uriArray, AsyncBizOperation op)
        {
            if (uriArray.Length != 0)
            {
                SipRequest req = base.Owner.CreateSipRequest("S");
                req.Message.AddHeader(new SipcEventHeader("AddToBlacklist"));
                req.Context = op;
                StringWriter tw = new StringWriter();
                XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
                    writer.WriteStartElement("contacts");
                    writer.WriteStartElement("blacklist");
                    foreach (string text in uriArray)
                    {
                        writer.WriteStartElement("blocked");
                        writer.WriteAttributeString("uri", text);
                        writer.WriteEndElement();
                    }
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                });
                req.Message.Body = tw.ToString();
                tw.Dispose();
                ErrorHelper.HandleSendRequestErrorAndTimeout(req);
                req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AddToBlackList);
                base.Owner.SendSipMessage(req);
            }
        }

        public void AsyncAddToBlackList(IicUri uri, AsyncBizOperation op)
        {
            this.AsyncAddToBlackList(new string[] { uri.Raw }, op);
        }

        internal void AsyncDoLogout(AsyncBizOperation op)
        {
            ClientLogger.WriteLoginSuccessed("退订联系人状态", 2);
            this.AsyncSubscribePresenceBatchAll(false, op);
            Imps.Client.Core.User.TryCallReceiveMessageOnOp(op);
        }

        public bool AsyncGetAddBuddyHistory(DateTime startTime, DateTime endTime, AsyncBizOperation op)
        {
            SipRequest req = base.Owner.CreateSipRequest("S");
            req.Message.AddHeader(new SipcEventHeader("GetAddBuddyHistory"));
            req.Context = op;
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
                writer.WriteStartElement("history");
                writer.WriteAttributeString("start-time", startTime.ToLongDateString());
                writer.WriteAttributeString("end-time", endTime.ToLongDateString());
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            ErrorHelper.HandleSendRequestErrorAndTimeout(req);
            req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.<AsyncGetAddBuddyHistory>b__25);
            base.Owner.SendSipMessage(req);
            return true;
        }

        internal bool AsyncGetContactList(AsyncBizOperation op, bool withVersion)
        {
            return this.AsyncGetContactList(op, withVersion, true);
        }

        internal bool AsyncGetContactList(AsyncBizOperation op, bool withVersion, bool isSimplicity)
        {
            SipRequest req = base.CreateSipRequest("S");
            req.Message.AddHeader(new SipcEventHeader("GetContactList"));
            if (op == null)
            {
                op = new AsyncBizOperation();
            }
            Paramforbiz paramforbiz = new Paramforbiz();
            paramforbiz.isSimplicity = isSimplicity;
            paramforbiz.withVersion = withVersion;
            op.ContextForBiz = paramforbiz;
            req.Context = op;
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, withVersion, delegate (XmlWriter writer, object context) {
                bool flag = (bool) context;
                writer.WriteStartElement("contacts");
                if (flag && (this.Version.Length > 0))
                {
                    writer.WriteAttributeString("version", this.Version);
                }
                writer.WriteStartElement("buddy-lists");
                writer.WriteEndElement();
                writer.WriteStartElement("buddies");
                writer.WriteAttributeString("attributes", "all");
                writer.WriteEndElement();
                writer.WriteStartElement("mobile-buddies");
                writer.WriteAttributeString("attributes", "all");
                writer.WriteEndElement();
                writer.WriteStartElement("chat-friends");
                writer.WriteEndElement();
                writer.WriteStartElement("blacklist");
                writer.WriteEndElement();
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            ErrorHelper.HandleSendRequestErrorAndTimeout(req);
            req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncGetContactList);
            base.SendSipMessage(req);
            return true;
        }

        public bool AsyncGetContactsInfo(Imps.Client.Core.Contact contact, AsyncBizOperation op, string mobileDeviceAttrs, bool getInfoWithCurrentVersion, params string[] contactInfoItems)
        {
            if (contact == null)
            {
                return false;
            }
            if (!contact.EnableGetContactInfo)
            {
                return false;
            }
            ContactCollection contacts = new ContactCollection();
            contacts.Add(contact);
            return this.AsyncGetContactsInfo(contacts, op, mobileDeviceAttrs, getInfoWithCurrentVersion, contactInfoItems);
        }

⌨️ 快捷键说明

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