Added node server sync and delete sync. Cleaned up codebase and extracted calls to apis to services

This commit is contained in:
2025-03-02 19:24:24 +01:00
parent ef7f866ded
commit 30390dab71
25 changed files with 751 additions and 282 deletions

View File

@@ -0,0 +1,84 @@
using MoonCore.Attributes;
using MoonCore.Helpers;
using MoonCore.Models;
using MoonlightServers.Shared.Http.Responses.Users.Servers;
namespace MoonlightServers.Frontend.Services;
[Scoped]
public class ServerService
{
private readonly HttpApiClient HttpApiClient;
public ServerService(HttpApiClient httpApiClient)
{
HttpApiClient = httpApiClient;
}
public async Task<PagedData<ServerDetailResponse>> GetServers(int page, int perPage)
{
return await HttpApiClient.GetJson<PagedData<ServerDetailResponse>>(
$"api/client/servers?page={page}&pageSize={perPage}"
);
}
public async Task<ServerDetailResponse> GetServer(int serverId)
{
return await HttpApiClient.GetJson<ServerDetailResponse>(
$"api/client/servers/{serverId}"
);
}
public async Task<ServerStatusResponse> GetStatus(int serverId)
{
return await HttpApiClient.GetJson<ServerStatusResponse>(
$"api/client/servers/{serverId}/status"
);
}
public async Task<ServerLogsResponse> GetLogs(int serverId)
{
return await HttpApiClient.GetJson<ServerLogsResponse>(
$"api/client/servers/{serverId}/logs"
);
}
public async Task<ServerWebSocketResponse> GetWebSocket(int serverId)
{
return await HttpApiClient.GetJson<ServerWebSocketResponse>(
$"api/client/servers/{serverId}/ws"
);
}
public async Task Install(int serverId)
{
await HttpApiClient.Post(
$"api/client/servers/{serverId}/install"
);
}
#region Power actions
public async Task Start(int serverId)
{
await HttpApiClient.Post(
$"api/client/servers/{serverId}/start"
);
}
public async Task Stop(int serverId)
{
await HttpApiClient.Post(
$"api/client/servers/{serverId}/stop"
);
}
public async Task Kill(int serverId)
{
await HttpApiClient.Post(
$"api/client/servers/{serverId}/kill"
);
}
#endregion
}

View File

@@ -1,8 +1,8 @@
@using MoonCore.Helpers
@using MoonlightServers.Frontend.Services
@using MoonlightServers.Shared.Enums
@using MoonlightServers.Shared.Http.Responses.Users.Servers
@inject HttpApiClient ApiClient
@inject ServerService ServerService
@inject ILogger<ServerCard> Logger
@{
@@ -158,9 +158,7 @@
try
{
Status = await ApiClient.GetJson<ServerStatusResponse>(
$"api/client/servers/{Server.Id}/status"
);
Status = await ServerService.GetStatus(Server.Id);
}
catch (Exception e)
{

View File

@@ -1,11 +1,12 @@
@using MoonCore.Blazor.Tailwind.Alerts
@using MoonCore.Helpers
@using MoonCore.Blazor.Tailwind.Components
@using MoonlightServers.Frontend.Services
@using MoonlightServers.Shared.Enums
@inherits BaseServerTab
@inject HttpApiClient HttpApiClient
@inject ServerService ServerService
@inject AlertService AlertService
<div class="grid grid-cols-1 md:col-span-2 lg:grid-cols-3">
@@ -34,7 +35,7 @@
await AlertService.ConfirmDanger(
"Server installation",
"Do you really want to reinstall the server? This can potentially lead to loss of data",
() => HttpApiClient.Post($"api/client/servers/{Server.Id}/install")
() => ServerService.Install(Server.Id)
);
}
}

View File

@@ -1,12 +1,12 @@
@page "/servers"
@using MoonCore.Helpers
@using MoonlightServers.Frontend.UI.Components.Servers
@using MoonCore.Blazor.Tailwind.Components
@using MoonCore.Models
@using MoonlightServers.Frontend.Services
@using MoonlightServers.Shared.Http.Responses.Users.Servers
@inject HttpApiClient ApiClient
@inject ServerService ServerService
<LazyLoader Load="Load">
<div class="flex flex-col gap-y-5">
@@ -42,9 +42,7 @@
private async Task Load(LazyLoader lazyLoader)
{
Servers = await PagedData<ServerDetailResponse>.All(async (page, pageSize) =>
await ApiClient.GetJson<PagedData<ServerDetailResponse>>(
$"api/client/servers?page={page}&pageSize={pageSize}"
)
await ServerService.GetServers(page, pageSize)
);
}
}

View File

@@ -7,11 +7,12 @@
@using MoonCore.Helpers
@using MoonlightServers.Frontend.Interfaces
@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 HttpApiClient ApiClient
@inject ServerService ServerService
@inject IEnumerable<IServerTabProvider> TabProviders
@implements IAsyncDisposable
@@ -164,25 +165,19 @@
try
{
// Load meta data
Server = await ApiClient.GetJson<ServerDetailResponse>(
$"api/client/servers/{ServerId}"
);
Server = await ServerService.GetServer(ServerId);
// Load server tabs
foreach (var serverTabProvider in TabProviders)
Tabs.AddRange(await serverTabProvider.GetTabs(Server));
// Load initial status for first render
var status = await ApiClient.GetJson<ServerStatusResponse>(
$"api/client/servers/{ServerId}/status"
);
var status = await ServerService.GetStatus(ServerId);
State = status.State;
// Load initial messages
var initialLogs = await ApiClient.GetJson<ServerLogsResponse>(
$"api/client/servers/{ServerId}/logs"
);
var initialLogs = await ServerService.GetLogs(ServerId);
InitialConsoleMessage = "";
@@ -190,9 +185,7 @@
InitialConsoleMessage += message;
// Load websocket meta
var websocketDetails = await ApiClient.GetJson<ServerWebSocketResponse>(
$"api/client/servers/{ServerId}/ws"
);
var websocketDetails = await ServerService.GetWebSocket(ServerId);
// Build signal r
HubConnection = new HubConnectionBuilder()
@@ -232,13 +225,13 @@
}
private async Task Start()
=> await ApiClient.Post($"api/client/servers/{Server.Id}/start");
=> await ServerService.Start(ServerId);
private async Task Stop()
=> await ApiClient.Post($"api/client/servers/{Server.Id}/stop");
=> await ServerService.Stop(ServerId);
private async Task Kill()
=> await ApiClient.Post($"api/client/servers/{Server.Id}/kill");
=> await ServerService.Kill(ServerId);
public async ValueTask DisposeAsync()
{