void Listener_OnGroupMemberAdded(FizzGroupMemberEventData eventData) { if (UserId.Equals(eventData.MemberId)) { Client.Chat.Groups.FetchGroup(eventData.GroupId, (groupMeta, ex) => { if (ex == null) { AddGroup(new FizzGroupModel(groupMeta, GroupTag)); FizzGroupModel group = GetGroup(groupMeta.Id); if (eventData.State == FizzGroupMemberState.Pending) { GroupInvites.Add(group.Id, CreateUserGroup(eventData)); } if (OnGroupAdded != null) { OnGroupAdded.Invoke(GetGroup(eventData.GroupId)); } } }); } else { FizzGroupModel group = GetGroup(eventData.GroupId); if (group != null && OnGroupMembersUpdated != null) { OnGroupMembersUpdated.Invoke(group); } } }
private IFizzUserGroup CreateUserGroup(FizzGroupMemberEventData eventData) { JSONClass userGroupJson = new JSONClass { { FizzJsonUserGroup.KEY_GROUP_ID, eventData.GroupId }, { FizzJsonUserGroup.KEY_ROLE, eventData.Role.ToString() }, { FizzJsonUserGroup.KEY_STATE, eventData.State.ToString() }, { FizzJsonUserGroup.KEY_CREATED, Utils.GetCurrentUnixTimeStamp() } }; return(new FizzJsonUserGroup(userGroupJson.ToString())); }
private FizzGroupMemberEventData ParseMemberEventData(FizzTopicMessage message) { JSONClass payload = JSONNode.Parse(message.Data).AsObject; FizzGroupMemberEventData data = new FizzGroupMemberEventData(); data.MemberId = payload["id"]; data.GroupId = message.From; data.State = FizzUtils.ParseState(payload["state"]); data.Role = FizzUtils.ParseRole(payload["role"]); return(data); }
void Listener_OnGroupMemberUpdated(FizzGroupMemberEventData eventData) { FizzGroupModel group = GetGroup(eventData.GroupId); if (group != null) { if (eventData.MemberId.Equals(UserId) && eventData.State == FizzGroupMemberState.Joined) { GroupInvites.Remove(eventData.GroupId); } if (OnGroupMembersUpdated != null) { OnGroupMembersUpdated.Invoke(group); } } }
void Listener_OnGroupMemberRemoved(FizzGroupMemberEventData eventData) { if (UserId.Equals(eventData.MemberId)) { FizzGroupModel group = GetGroup(eventData.GroupId); GroupInvites.Remove(eventData.GroupId); Groups.Remove(groupLookup[eventData.GroupId]); groupLookup.Remove(eventData.GroupId); if (group != null && OnGroupRemoved != null) { OnGroupRemoved.Invoke(group); } } else { FizzGroupModel group = GetGroup(eventData.GroupId); if (group != null && OnGroupMembersUpdated != null) { OnGroupMembersUpdated.Invoke(group); } } }