diff options
Diffstat (limited to 'MatrixRoomUtils.Web/Classes/RoomInfo.cs')
-rw-r--r-- | MatrixRoomUtils.Web/Classes/RoomInfo.cs | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/MatrixRoomUtils.Web/Classes/RoomInfo.cs b/MatrixRoomUtils.Web/Classes/RoomInfo.cs deleted file mode 100644 index 9d0cd59..0000000 --- a/MatrixRoomUtils.Web/Classes/RoomInfo.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System.Collections.ObjectModel; -using System.Text.Json.Nodes; -using ArcaneLibs; -using LibMatrix; -using LibMatrix.EventTypes.Spec.State; -using LibMatrix.EventTypes.Spec.State.RoomInfo; -using LibMatrix.Interfaces; -using LibMatrix.RoomTypes; - -namespace MatrixRoomUtils.Web.Classes; - -public class RoomInfo : NotifyPropertyChanged { - public required GenericRoom Room { get; set; } - public ObservableCollection<StateEventResponse?> StateEvents { get; } = new(); - - public async Task<StateEventResponse?> GetStateEvent(string type, string stateKey = "") { - var @event = StateEvents.FirstOrDefault(x => x.Type == type && x.StateKey == stateKey); - if (@event is not null) return @event; - @event = new StateEventResponse { - RoomId = Room.RoomId, - Type = type, - StateKey = stateKey, - Sender = null, //TODO implement - EventId = null - }; - // if (Room is null) return null; - try { - @event.RawContent = await Room.GetStateAsync<JsonObject>(type, stateKey); - } - catch (MatrixException e) { - if (e is { ErrorCode: "M_NOT_FOUND" }) { - if (type == "m.room.name") - @event = new() { - Type = type, - StateKey = stateKey, - TypedContent = new RoomNameEventContent() { - Name = await Room.GetNameOrFallbackAsync() - }, - //TODO implement - RoomId = null, - Sender = null, - EventId = null - }; - else - @event.RawContent = default!; - } - else throw; - } - - StateEvents.Add(@event); - return @event; - } - - public string? RoomIcon { - get => _roomIcon ?? "https://api.dicebear.com/6.x/identicon/svg?seed=" + Room.RoomId; - set => SetField(ref _roomIcon, value); - } - - public string? RoomName { - get => _roomName ?? DefaultRoomName ?? Room.RoomId; - set => SetField(ref _roomName, value); - } - - public RoomCreateEventContent? CreationEventContent { - get => _creationEventContent; - set => SetField(ref _creationEventContent, value); - } - - public string? RoomCreator { - get => _roomCreator; - set => SetField(ref _roomCreator, value); - } - - // public string? GetRoomIcon() => (StateEvents.FirstOrDefault(x => x?.Type == RoomAvatarEventContent.EventId)?.TypedContent as RoomAvatarEventContent)?.Url ?? - // "mxc://rory.gay/dgP0YPjJEWaBwzhnbyLLwGGv"; - - private string? _roomIcon; - private string? _roomName; - private RoomCreateEventContent? _creationEventContent; - private string? _roomCreator; - - public string? DefaultRoomName { get; set; } - - public RoomInfo() { - StateEvents.CollectionChanged += (_, args) => { - if (args.NewItems is { Count: > 0 }) - foreach (StateEventResponse newState in args.NewItems) { - if (newState.GetType == typeof(RoomNameEventContent) && newState.TypedContent is RoomNameEventContent roomNameContent) - RoomName = roomNameContent.Name; - else if (newState.GetType == typeof(RoomAvatarEventContent) && newState.TypedContent is RoomAvatarEventContent roomAvatarContent) - RoomIcon = roomAvatarContent.Url; - else if (newState.GetType == typeof(RoomCreateEventContent) && newState.TypedContent is RoomCreateEventContent roomCreateContent) { - CreationEventContent = roomCreateContent; - RoomCreator = newState.Sender; - } - } - }; - } -} |