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);