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); } } } } } }