Exemplo n.º 1
0
        /// <summary>
        /// Return a joined room object by it's roomid.
        /// </summary>
        /// <returns>The room.</returns>
        /// <param name="roomid">Roomid.</param>
        public MatrixRoom GetRoom(string roomid)  //TODO: Maybe add a try method.
        {
            MatrixRoom room = null;

            _rooms.TryGetValue(roomid, out room);
            if (room == null)
            {
                log.LogInformation($"Don't have {roomid} synced, getting the room from /state");
                // If we don't have the room, attempt to grab it's state.
                var state = api.GetRoomState(roomid);
                room = new MatrixRoom(api, roomid);
                foreach (var matrixEvent in state)
                {
                    room.FeedEvent(matrixEvent);
                }
                _rooms.TryAdd(roomid, room);
            }
            return(room);
        }