Files
Moonlight/Moonlight/Shared/Components/ServerControl/Settings/Join2StartSetting.razor
2023-06-07 02:38:21 +02:00

80 lines
2.6 KiB
Plaintext

@using Moonlight.App.Services
@using Task = System.Threading.Tasks.Task
@using Moonlight.Shared.Components.Partials
@using Moonlight.App.Helpers
@using Moonlight.App.Repositories
@using Moonlight.App.Repositories.Servers
@using Logging.Net
@using Moonlight.App.ApiClients.Wings
@using Moonlight.App.Database.Entities
@inject ServerRepository ServerRepository
@inject ServerService ServerService
@inject SmartTranslateService TranslationService
<div class="col">
<div class="card card-body p-0">
<LazyLoader @ref="Loader" Load="Load">
<table class="w-100">
<tr>
<td class="w-100">
<div class="form-check form-check-custom form-check-solid mb-3">
<input @bind="Value" class="form-check-input" type="checkbox" value="1" id="j2sCheck"/>
<label class="form-check-label" for="j2sCheck">
<TL>Join2Start</TL>
</label>
</div>
</td>
<td>
<WButton
OnClick="Save"
Text="@(TranslationService.Translate("Change"))"
WorkingText="@(TranslationService.Translate("Changing"))"
CssClasses="btn-primary">
</WButton>
</td>
</tr>
</table>
</LazyLoader>
</div>
</div>
@code
{
[CascadingParameter]
public Server CurrentServer { get; set; }
private bool Value;
private LazyLoader Loader;
private async Task Load(LazyLoader lazyLoader)
{
Value = CurrentServer.Variables.First(x => x.Key == "J2S").Value == "1";
await InvokeAsync(StateHasChanged);
}
private async Task Save()
{
CurrentServer.Variables.First(x => x.Key == "J2S").Value = Value ? "1" : "0";
ServerRepository.Update(CurrentServer);
var details = await ServerService.GetDetails(CurrentServer);
// For better user experience, we start the j2s server right away when the user enables j2s
if (details.State == "offline")
{
await ServerService.SetPowerState(CurrentServer, PowerSignal.Start);
}
// For better user experience, we kill the j2s server right away when the user disables j2s and the server is starting
if (details.State == "starting")
{
await ServerService.SetPowerState(CurrentServer, PowerSignal.Kill);
}
await Loader.Reload();
}
}