public void Update(GroupDescription description) { Name = description.Name; DisplayName = description.DisplayName; Joined = description.Member ?? false; var newMembers = new List <IUser>(from name in description.MemberNames select client.GetUser(name)); if (members != null) { var oldMembers = new List <IUser>(members); foreach (var member in newMembers) { if (!oldMembers.Contains(member)) { members.Add(member); UserAdded.SafeInvoke(this, new UserEventArgs(member)); } } foreach (var member in oldMembers) { if (!newMembers.Contains(member)) { members.Remove(member); UserRemoved.SafeInvoke(this, new UserEventArgs(member)); } } } else { members = newMembers; } Changed.SafeInvoke(this, new EventArgs()); }
void OnUserRemoved(object sender, UserEventArgs e) { participants.Remove(GetParticipant(e.User)); UserRemoved.SafeInvoke(this, e); if (participants.Count == 0) { Ended.SafeInvoke(this, new EventArgs()); events.UserAdded -= OnUserAdded; events.UserChanged -= OnUserChanged; events.UserRemoved -= OnUserRemoved; events.UserTyping -= OnUserTyping; events.ChatReceived -= OnChatReceived; } }
public void RaiseUserRemoved(UserEventArgs e) { UserRemoved.SafeInvoke(this, e); }