diff --git a/MoonlightServers.Frontend/UI/Components/Nodes/UpdateNodePartials/AllocationsNodeUpdate.razor b/MoonlightServers.Frontend/UI/Components/Nodes/UpdateNodePartials/AllocationsNodeUpdate.razor
index 79f5cdf..138ca35 100644
--- a/MoonlightServers.Frontend/UI/Components/Nodes/UpdateNodePartials/AllocationsNodeUpdate.razor
+++ b/MoonlightServers.Frontend/UI/Components/Nodes/UpdateNodePartials/AllocationsNodeUpdate.razor
@@ -31,8 +31,10 @@
-
+
+
+
diff --git a/MoonlightServers.Frontend/UI/Components/Servers/ServerTabs/FilesTab.razor b/MoonlightServers.Frontend/UI/Components/Servers/ServerTabs/FilesTab.razor
index fd89340..dfe2f8c 100644
--- a/MoonlightServers.Frontend/UI/Components/Servers/ServerTabs/FilesTab.razor
+++ b/MoonlightServers.Frontend/UI/Components/Servers/ServerTabs/FilesTab.razor
@@ -8,7 +8,7 @@
@inject ServerFileSystemService FileSystemService
@inject DownloadService DownloadService
-
+
@code
{
diff --git a/MoonlightServers.Frontend/UI/Views/Client/Manage.razor b/MoonlightServers.Frontend/UI/Views/Client/Manage.razor
index 4d097c7..4ce9491 100644
--- a/MoonlightServers.Frontend/UI/Views/Client/Manage.razor
+++ b/MoonlightServers.Frontend/UI/Views/Client/Manage.razor
@@ -1,4 +1,5 @@
@page "/servers/{ServerId:int}"
+@page "/servers/{ServerId:int}/{TabPath:alpha}"
@using Microsoft.AspNetCore.SignalR.Client
@using MoonlightServers.Shared.Http.Responses.Users.Servers
@@ -9,10 +10,9 @@
@using MoonlightServers.Frontend.Models
@using MoonlightServers.Frontend.Services
@using MoonlightServers.Shared.Enums
-@using MoonlightServers.Frontend.UI.Components
-@using MoonlightServers.Frontend.UI.Components.Servers.ServerTabs
@inject ServerService ServerService
+@inject NavigationManager Navigation
@inject IEnumerable TabProviders
@implements IAsyncDisposable
@@ -124,25 +124,43 @@
-
+
+
+
+ @{
+ var rf = ComponentHelper.FromType(CurrentTab!.ComponentType, parameters =>
+ {
+ parameters.Add("Server", Server);
+ parameters.Add("State", State);
+ parameters.Add("InitialConsoleMessage", InitialConsoleMessage);
+ parameters.Add("HubConnection", HubConnection);
+ parameters.Add("Parent", this);
+ });
+ }
+
+
+ @rf
+
}
@@ -150,8 +168,10 @@
@code
{
[Parameter] public int ServerId { get; set; }
+ [Parameter] public string? TabPath { get; set; }
- private List Tabs = new();
+ private ServerTab[] Tabs;
+ private ServerTab? CurrentTab;
private ServerDetailResponse Server;
private bool NotFound = false;
@@ -168,8 +188,23 @@
Server = await ServerService.GetServer(ServerId);
// Load server tabs
+ var tmpTabs = new List();
+
foreach (var serverTabProvider in TabProviders)
- Tabs.AddRange(await serverTabProvider.GetTabs(Server));
+ tmpTabs.AddRange(await serverTabProvider.GetTabs(Server));
+
+ Tabs = tmpTabs.OrderBy(x => x.Priority).ToArray();
+
+ // Find current tab
+ if (!string.IsNullOrEmpty(TabPath))
+ {
+ CurrentTab = Tabs.FirstOrDefault(
+ x => TabPath.Equals(x.Path, StringComparison.InvariantCultureIgnoreCase)
+ );
+ }
+
+ if (CurrentTab == null)
+ CurrentTab = Tabs.First();
// Load initial status for first render
var status = await ServerService.GetStatus(ServerId);
@@ -224,6 +259,14 @@
}
}
+ private async Task SwitchTab(ServerTab tab)
+ {
+ CurrentTab = tab;
+ Navigation.NavigateTo($"/servers/{ServerId}/{tab.Path}");
+
+ await InvokeAsync(StateHasChanged);
+ }
+
private async Task Start()
=> await ServerService.Start(ServerId);