From 6ab6eba980a51fad6e3474fdc0c507bf75ebabde Mon Sep 17 00:00:00 2001 From: Kobe Albright Date: Mon, 10 Feb 2025 16:43:50 -0500 Subject: [PATCH] Fix chat autoload --- .../ChannelList/PlanetListComponent.razor | 29 ++++++++++++++++++- .../ChannelList/PlanetListComponent.razor.css | 13 +++++++-- .../ChannelWindows/ChatWindowComponent.razor | 1 + Valour/Client/Modals/ModalRoot.razor | 4 +++ Valour/Sdk/Models/Planet.cs | 9 ++++-- 5 files changed, 51 insertions(+), 5 deletions(-) diff --git a/Valour/Client/Components/Sidebar/ChannelList/PlanetListComponent.razor b/Valour/Client/Components/Sidebar/ChannelList/PlanetListComponent.razor index e9d07991..1105314c 100644 --- a/Valour/Client/Components/Sidebar/ChannelList/PlanetListComponent.razor +++ b/Valour/Client/Components/Sidebar/ChannelList/PlanetListComponent.razor @@ -27,6 +27,13 @@ {
} + + @if (_canEdit) + { +
+ +
+ } @@ -57,7 +64,8 @@ @code { - [Parameter] public Planet Planet { get; set; } + [Parameter] + public Planet Planet { get; set; } public bool Open { get; set; } = true; @@ -65,6 +73,8 @@ private int _notifications; private bool _hasUnread; + + private static bool _canEdit; protected override void OnInitialized() { @@ -80,10 +90,17 @@ ChannelService.CategoryReordered += OnOrderUpdate; DetermineUnreadAndNotifications(); + + DeterminePermissions(); GetTopLevelItems(); } + private void DeterminePermissions() + { + _canEdit = Planet.MyMember?.HasPermission(PlanetPermissions.Manage) ?? false; + } + private void DetermineUnreadAndNotifications() { _hasUnread = UnreadService.IsPlanetUnread(Planet.Id); @@ -166,6 +183,16 @@ Open = !Open; StateHasChanged(); } + + private void OnClickEdit() + { + var data = new EditPlanetComponent.ModalParams() + { + Planet = Planet + }; + + ModalRoot.Instance.OpenModal(data); + } private void GetTopLevelItems() { diff --git a/Valour/Client/Components/Sidebar/ChannelList/PlanetListComponent.razor.css b/Valour/Client/Components/Sidebar/ChannelList/PlanetListComponent.razor.css index 554831ea..ccef76ca 100644 --- a/Valour/Client/Components/Sidebar/ChannelList/PlanetListComponent.razor.css +++ b/Valour/Client/Components/Sidebar/ChannelList/PlanetListComponent.razor.css @@ -68,6 +68,7 @@ background-color: var(--strong-tint); border-radius: 8px; height: 13px; + min-width: 13px; transition: min-width, height 0.2s ease-in-out; display: flex; flex-direction: row; @@ -75,14 +76,22 @@ } .header-wrapper:hover .header .right .unread-badge { - min-width: 16px; - height: 16px; + } .header .right .unread-badge.notification { background-color: var(--p-red); } +.header .edit-button { + margin-left: 6px; + transition: transform 0.2s ease-in-out; +} + +.header .edit-button:hover { + transform: rotate(45deg) scale(1.1); +} + .unread-badge span { font-size: 10px; padding: 0; diff --git a/Valour/Client/Components/Windows/ChannelWindows/ChatWindowComponent.razor b/Valour/Client/Components/Windows/ChannelWindows/ChatWindowComponent.razor index 5d378224..9959363c 100644 --- a/Valour/Client/Components/Windows/ChannelWindows/ChatWindowComponent.razor +++ b/Valour/Client/Components/Windows/ChannelWindows/ChatWindowComponent.razor @@ -511,6 +511,7 @@ else if (imported.PlanetId is not null) { var planet = await client.PlanetService.FetchPlanetAsync(imported.PlanetId!.Value); + await planet.EnsureReadyAsync(); Data = await planet.FetchChannelAsync(imported.ChannelId); } else diff --git a/Valour/Client/Modals/ModalRoot.razor b/Valour/Client/Modals/ModalRoot.razor index 8f7b3570..196ff0d8 100644 --- a/Valour/Client/Modals/ModalRoot.razor +++ b/Valour/Client/Modals/ModalRoot.razor @@ -34,6 +34,8 @@ @code { + public static ModalRoot Instance { get; private set; } + private readonly TimeSpan _fadeDuration = TimeSpan.FromMilliseconds(300); private class ModalInstance @@ -62,6 +64,8 @@ protected override void OnInitialized() { KeyboardListener.KeyDown += OnKeyDown; + + Instance = this; } /// diff --git a/Valour/Sdk/Models/Planet.cs b/Valour/Sdk/Models/Planet.cs index 6eb11a91..219e717e 100644 --- a/Valour/Sdk/Models/Planet.cs +++ b/Valour/Sdk/Models/Planet.cs @@ -303,8 +303,13 @@ public void Dispose() public async Task EnsureReadyAsync() { if (_node is null) - _node = await Client.NodeService.GetNodeForPlanetAsync(Id); - + { + if (NodeName is not null) + _node = await Client.NodeService.GetByName(NodeName); + else + _node = await Client.NodeService.GetNodeForPlanetAsync(Id); + } + // Always also get member of client if (MyMember is null) MyMember = await FetchMemberByUserAsync(Client.Me.Id);