private void Remove(RosterItem rosterItem) { if (_items.ContainsKey(rosterItem.JId)) { _items.Remove(rosterItem.JId); RosterChanged.Fire(this, new RosterChangedEventArgs(RosterItemChangedType.Updated, rosterItem)); } else { _items.Add(rosterItem.JId, rosterItem); RosterChanged.Fire(this, new RosterChangedEventArgs(RosterItemChangedType.Added, rosterItem)); } }
internal RosterChangedEventArgs(RosterItemChangedType changedType, RosterItem rosterItem) { RosterItem = rosterItem; ChangedType = changedType; }
private void OnRosterInitialResult(IQResponse response) { if(response.ResponseType == IQResponseType.Result) { foreach (var itemElement in response.Content) { var jid = JId.Parse(itemElement.Attribute("jid").Value); string name = itemElement.Attribute("name") != null ? itemElement.Attribute("name").Value : null; var subscriptionType = itemElement.Attribute("subscription") != null ? (RosterItemSubscriptionType)Enum.Parse(typeof(RosterItemSubscriptionType), itemElement.Attribute("subscription").Value, true) : RosterItemSubscriptionType.None; var rosterItem = new RosterItem(jid, name, subscriptionType); foreach (var groupElement in itemElement.Descendants(XName.Get("group", Namespace))) { rosterItem.Groups.Add(groupElement.Value); } AddOrUpdate(rosterItem); } SendPresence(null, null); } //TODO: handle error }