📄 contactlist.cs
字号:
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 + -