From def33cc092ae2c6defcc218b108b7c99cbfb8581 Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Sun, 2 Jul 2023 01:01:09 +0200 Subject: Prefetch room info --- .../Pages/RoomManager/RoomManager.razor | 96 ---------------------- .../Pages/RoomManager/RoomManagerTimeline.razor | 11 ++- 2 files changed, 5 insertions(+), 102 deletions(-) delete mode 100644 MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor (limited to 'MatrixRoomUtils.Web/Pages/RoomManager') diff --git a/MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor b/MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor deleted file mode 100644 index 087adf8..0000000 --- a/MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor +++ /dev/null @@ -1,96 +0,0 @@ -@page "/RoomManager" -@inject ILocalStorageService LocalStorage -@inject NavigationManager NavigationManager -

Room manager

-
-@if (Rooms.Count == 0) { -

You are not in any rooms!

-} -else { -

You are in @Rooms.Count rooms and @Spaces.Count spaces

-

- Create room -

- -
- Space List - @foreach (var room in Spaces) { - - - - } -
-
- Room List - @foreach (var room in Rooms) { - - - - } -
-} - -
- - -@code { - public List Rooms { get; set; } = new(); - public List Spaces { get; set; } = new(); - - protected override async Task OnInitializedAsync() { - Console.WriteLine("Initializing room manager"); - Console.WriteLine("Loaded from local storage"); - await base.OnInitializedAsync(); - Console.WriteLine("Initialized base"); - var hs = await MRUStorage.GetCurrentSessionOrNavigate(); - if (hs is null) return; - Console.WriteLine("Fetching joined rooms"); - var _rooms = await hs.GetJoinedRooms(); - StateHasChanged(); - Console.WriteLine($"Got {_rooms.Count} rooms"); - var semaphore = new SemaphoreSlim(10); - var tasks = new List>(); - foreach (var room in _rooms) { - tasks.Add(CheckIfSpace(room, semaphore)); - } - await Task.WhenAll(tasks); - - Console.WriteLine("Fetched joined rooms!"); - } - - private async Task CheckIfSpace(GenericRoom room, SemaphoreSlim semaphore) { - await semaphore.WaitAsync(); - // Console.WriteLine($"Checking if {room.RoomId} is a space"); - try { - var state = await room.GetStateAsync("m.room.create"); - if (state is not null) { - //Console.WriteLine(state.Value.ToJson()); - if (state.Type is not null) { - if (state.Type == "m.space") { - Console.WriteLine($"Room {room.RoomId} is a space!"); - Spaces.Add(room); - StateHasChanged(); - return room; - } - else { - Console.WriteLine($"Encountered unknown room type {state.Type}"); - } - } - else { - Rooms.Add(room); - //this is fine, apprently... - // Console.WriteLine($"Room {room.RoomId} has no Content.type in m.room.create!"); - } - } - } - catch (Exception e) { - Console.WriteLine(e); - return null; - } - finally { - semaphore.Release(); - } - return null; - } - -} \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Pages/RoomManager/RoomManagerTimeline.razor b/MatrixRoomUtils.Web/Pages/RoomManager/RoomManagerTimeline.razor index e32b5cb..3225c15 100644 --- a/MatrixRoomUtils.Web/Pages/RoomManager/RoomManagerTimeline.razor +++ b/MatrixRoomUtils.Web/Pages/RoomManager/RoomManagerTimeline.razor @@ -14,13 +14,12 @@ @code { [Parameter] - public string RoomId { get; set; } = "invalid!!!!!!"; + public string RoomId { get; set; } private List Messages { get; } = new(); private List Events { get; } = new(); protected override async Task OnInitializedAsync() { - RoomId = RoomId.Replace('~', '.'); Console.WriteLine("RoomId: " + RoomId); var hs = await MRUStorage.GetCurrentSessionOrNavigate(); if (hs is null) return; @@ -46,10 +45,10 @@ _ => typeof(TimelineUnknownItem) }; - private Dictionary ComponentParameters(Type ComponentType, StateEventResponse Event) => ComponentType switch { - Type t when t == typeof(TimelineMessageItem) => new Dictionary { { "Event", Event }, { "Events", Events } }, - Type t when t == typeof(TimelineMemberItem) => new Dictionary { { "Event", Event }, { "Events", Events } }, - _ => new Dictionary { { "Event", Event }, { "Events", Events } } + private Dictionary ComponentParameters(Type componentType, StateEventResponse @event) => componentType switch { + not null when componentType == typeof(TimelineMessageItem) => new Dictionary { { "Event", @event }, { "Events", Events } }, + not null when componentType == typeof(TimelineMemberItem) => new Dictionary { { "Event", @event }, { "Events", Events } }, + _ => new Dictionary { { "Event", @event }, { "Events", Events } } }; } \ No newline at end of file -- cgit 1.5.1