Added node server sync and delete sync. Cleaned up codebase and extracted calls to apis to services
This commit is contained in:
84
MoonlightServers.Frontend/Services/ServerService.cs
Normal file
84
MoonlightServers.Frontend/Services/ServerService.cs
Normal 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
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user