private void populateChannels(MatrixSyncResponse syncResponse)
        {
            if (syncResponse.Rooms?.JoinedRooms != null)
            {
                _channels.Clear();
                foreach (var room in syncResponse.Rooms.JoinedRooms)
                {
                    var roomId    = room.Key;
                    var roomAlias = roomId;
                    var roomName  = roomId;
                    var members   = new List <UserModel>();
                    foreach (var roomEvent in room.Value.State.Events)
                    {
                        if (roomEvent is MatrixRoomCanonicalAliasEvent)
                        {
                            roomAlias =
                                (roomEvent as MatrixRoomCanonicalAliasEvent).Content.RoomAlias;
                        }
                        if (roomEvent is MatrixRoomNameEvent)
                        {
                            roomName = (roomEvent as MatrixRoomNameEvent).Content.Name;
                        }
                        if (roomEvent is MatrixRoomMemberEvent)
                        {
                            var memberEvent = roomEvent as MatrixRoomMemberEvent;
                            if (!memberEvent.Content.Membership.Equals("join",
                                                                       StringComparison.OrdinalIgnoreCase))
                            {
                                continue;
                            }
                            var member = new UserModel()
                            {
                                Id          = memberEvent.Sender,
                                Provider    = ChatServiceKind.Matrix,
                                Alias       = memberEvent.Sender,
                                DisplayName = memberEvent.Content.DisplayName,
                                Presence    = UserModel.PresenceKind.Online,
                                FromChatServiceConnection = this,
                            };
                            members.Add(member);
                        }
                    }

                    _channels.Add(new ChannelModel()
                    {
                        Id          = roomId,
                        Alias       = roomAlias,
                        DisplayName = roomName,
                        Users       = members,
                    });
                }
            }
            onChannelsUpdated();
        }
 private async Task joinInvitedRoomsAsync(MatrixSyncResponse syncResponse)
 {
     if (syncResponse.Rooms?.InvitedRooms != null)
     {
         foreach (var invitedRoom in syncResponse.Rooms.InvitedRooms)
         {
             if ((_roomServerRestriction.Length > 0) &&
                 !(invitedRoom.Key.ToUpper().EndsWith(_roomServerRestriction.ToUpper())))
             {
                 continue;
             }
             _logger.LogInformation($"Invited to room '{invitedRoom.Key}'");
             await joinRoomIdAsync(invitedRoom.Key);
         }
     }
 }
 private void processRoomMessages(MatrixSyncResponse syncResponse)
 {
     if (syncResponse.Rooms?.JoinedRooms != null)
     {
         foreach (var room in syncResponse.Rooms.JoinedRooms)
         {
             if (room.Value.Timeline?.Events != null)
             {
                 foreach (var roomEvent in room.Value.Timeline.Events)
                 {
                     if (roomEvent is MatrixRoomMessageEvent)
                     {
                         processRoomMessage(room.Key, (MatrixRoomMessageEvent)roomEvent);
                     }
                 }
             }
         }
     }
 }