From 5495a35403d285007d67f503042720302efdf94c Mon Sep 17 00:00:00 2001 From: "Emma@Rory&" Date: Mon, 24 Jul 2023 20:56:42 +0200 Subject: Code cleanup --- .../RoomListComponents/RoomListCategory.razor | 16 ++++--- .../Shared/RoomListComponents/RoomListSpace.razor | 18 +++++-- MatrixRoomUtils.Web/Shared/RoomListItem.razor | 55 ++++++++++++---------- 3 files changed, 53 insertions(+), 36 deletions(-) (limited to 'MatrixRoomUtils.Web/Shared') diff --git a/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListCategory.razor b/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListCategory.razor index 709f2d7..b798d49 100644 --- a/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListCategory.razor +++ b/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListCategory.razor @@ -6,13 +6,14 @@ @foreach (var room in rooms) {
- @if (RoomVersionDangerLevel(room) != 0) { - Upgrade room - } + @* @if (RoomVersionDangerLevel(room) != 0 && *@ + @* (room.StateEvents.FirstOrDefault(x=>x.Type == "m.room.power_levels")?.TypedContent is RoomPowerLevelEventData powerLevels && powerLevels.UserHasPermission(HomeServer.UserId, "m.room.tombstone"))) { *@ + @* Upgrade room *@ + @* } *@ View timeline View state Edit state - + @if (roomType == "Space") { } @@ -25,10 +26,13 @@ [Parameter] public KeyValuePair> Category { get; set; } - + [Parameter] public ProfileResponseEventData? GlobalProfile { get; set; } + [CascadingParameter] + public AuthenticatedHomeServer HomeServer { get; set; } = null!; + private string roomType => Category.Key; private List rooms => Category.Value; @@ -42,4 +46,4 @@ return 0; } -} \ No newline at end of file +} diff --git a/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListSpace.razor b/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListSpace.razor index 5153658..a113f0b 100644 --- a/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListSpace.razor +++ b/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListSpace.razor @@ -1,4 +1,4 @@ -Manage space +Manage space
@@ -16,6 +16,9 @@ [Parameter] public RoomInfo Space { get; set; } + [Parameter, CascadingParameter] + public List KnownRooms { get; set; } = new(); + [Parameter, CascadingParameter] public string? Breadcrumbs { get => _breadcrumbs + Space.Room.RoomId; @@ -30,9 +33,14 @@ var rooms = Space.Room.AsSpace.GetRoomsAsync(); await foreach (var room in rooms) { if (Breadcrumbs.Contains(room.RoomId)) continue; - Children.Add(new() { - Room = room - }); + RoomInfo roomInfo = KnownRooms.FirstOrDefault(x => x.Room.RoomId == room.RoomId); + if (roomInfo is null) { + roomInfo = new() { + Room = room + }; + KnownRooms.Add(roomInfo); + } + Children.Add(roomInfo); } await base.OnInitializedAsync(); } @@ -46,4 +54,4 @@ Console.WriteLine($"[RoomList] Rendering children of {Space.Room.RoomId}"); } -} \ No newline at end of file +} diff --git a/MatrixRoomUtils.Web/Shared/RoomListItem.razor b/MatrixRoomUtils.Web/Shared/RoomListItem.razor index b89fb18..e12f622 100644 --- a/MatrixRoomUtils.Web/Shared/RoomListItem.razor +++ b/MatrixRoomUtils.Web/Shared/RoomListItem.razor @@ -32,7 +32,7 @@ [Parameter] public GenericRoom? Room { get; set; } - + [Parameter] public RoomInfo? RoomInfo { get; set; } @@ -69,20 +69,32 @@ if (Room is null && RoomId is null && RoomInfo is null) { throw new ArgumentNullException(nameof(RoomId)); } - + // sweep from roominfo to id if (RoomInfo is not null) Room = RoomInfo.Room; if(Room is not null) RoomId = Room.RoomId; - + //sweep from id to roominfo if(RoomId is not null) Room ??= await hs.GetRoom(RoomId); if(Room is not null) RoomInfo ??= new RoomInfo() { Room = Room }; - await CheckRoomVersion(); - await GetRoomInfo(); - await LoadOwnProfile(); + try { + await CheckRoomVersion(); + await GetRoomInfo(); + await LoadOwnProfile(); + } + catch (MatrixException e) { + if (e is not { ErrorCode: "M_FORBIDDEN" }) { + throw; + } + roomName = "Error: " + e.Message; + roomIcon = "/blobfox_outage.gif"; + } + catch (Exception e) { + Console.WriteLine($"Failed to load room info for {RoomId}: {e.Message}"); + } _semaphoreSlim.Release(); } @@ -104,24 +116,17 @@ } private async Task CheckRoomVersion() { - try { - var ce = (await RoomInfo.GetStateEvent("m.room.create")).TypedContent as RoomCreateEventData; - if (int.TryParse(ce.RoomVersion, out var rv)) { - if (rv < 10) - hasOldRoomVersion = true; - } - else // treat unstable room versions as dangerous - hasDangerousRoomVersion = true; - - if (RoomConstants.DangerousRoomVersions.Contains(ce.RoomVersion)) { - hasDangerousRoomVersion = true; - roomName = "Dangerous room: " + roomName; - } + var ce = (await RoomInfo.GetStateEvent("m.room.create")).TypedContent as RoomCreateEventData; + if (int.TryParse(ce.RoomVersion, out var rv)) { + if (rv < 10) + hasOldRoomVersion = true; } - catch (MatrixException e) { - if (e is not { ErrorCode: "M_FORBIDDEN" }) { - throw; - } + else // treat unstable room versions as dangerous + hasDangerousRoomVersion = true; + + if (RoomConstants.DangerousRoomVersions.Contains(ce.RoomVersion)) { + hasDangerousRoomVersion = true; + roomName = "Dangerous room: " + roomName; } } @@ -132,7 +137,7 @@ var state = (await RoomInfo.GetStateEvent("m.room.avatar")).TypedContent as RoomAvatarEventData; if (state?.Url is { } url) { roomIcon = MediaResolver.ResolveMediaUri(hs.FullHomeServerDomain, url); - Console.WriteLine($"Got avatar for room {RoomId}: {roomIcon} ({url})"); + // Console.WriteLine($"Got avatar for room {RoomId}: {roomIcon} ({url})"); } } catch (MatrixException e) { @@ -142,4 +147,4 @@ } } -} \ No newline at end of file +} -- cgit 1.5.1