From 90eed5c74c95338f6f0794624a9fe3976781a2cc Mon Sep 17 00:00:00 2001 From: Marcel Baumgartner Date: Wed, 17 Apr 2024 15:42:51 +0200 Subject: [PATCH] Fixed a bug. Improved error handling. Small cleanup of code --- .../Features/Servers/Helpers/ServerConsole.cs | 6 +- .../Servers/UI/Layouts/UserLayout.razor | 85 ++++++++++--------- Moonlight/Moonlight.csproj | 4 +- 3 files changed, 51 insertions(+), 44 deletions(-) diff --git a/Moonlight/Features/Servers/Helpers/ServerConsole.cs b/Moonlight/Features/Servers/Helpers/ServerConsole.cs index c116526..cd10375 100644 --- a/Moonlight/Features/Servers/Helpers/ServerConsole.cs +++ b/Moonlight/Features/Servers/Helpers/ServerConsole.cs @@ -99,9 +99,11 @@ public class ServerConsole : IDisposable } catch (Exception e) { - if (e is not WebSocketException) + if (e is WebSocketException) + Logger.Warn($"Lost connection to daemon server websocket: {e.Message}"); + else { - Logger.Warn("Lost connection to daemon server websocket"); + Logger.Warn("Server console ws disconnected because of application error:"); Logger.Warn(e); } diff --git a/Moonlight/Features/Servers/UI/Layouts/UserLayout.razor b/Moonlight/Features/Servers/UI/Layouts/UserLayout.razor index 014d92a..815e9df 100644 --- a/Moonlight/Features/Servers/UI/Layouts/UserLayout.razor +++ b/Moonlight/Features/Servers/UI/Layouts/UserLayout.razor @@ -113,13 +113,7 @@
- @if (IsInstalling) - { -
- -
- } - else if (IsConsoleDisconnected) + @if (IsConsoleDisconnected) { We lost the connection to the server. Please refresh the page in order to retry. If this error persists please contact the support @@ -137,6 +131,12 @@ The node this server is on is still booting. Please refresh the page in order to retry. If this error persists please contact the support } + else if (IsInstalling) + { +
+ +
+ } else { @@ -217,37 +217,7 @@ Console = new ServerConsole(Server); // Configure - Console.OnStateChange += async state => - { - // General rerender to update the state text in the ui - // NOTE: Obsolete because of the update timer - //await InvokeAsync(StateHasChanged); - - // Change from offline to installing - // This will trigger the initialisation of the install view - if (state == ServerState.Installing && !IsInstalling) - { - IsInstalling = true; - - // After this call, we should have access to the install terminal reference - await InvokeAsync(StateHasChanged); - - Console.OnNewMessage += OnInstallConsoleMessage; - } - // Change from installing to offline - // This will trigger the destruction of the install view - else if (state == ServerState.Offline && IsInstalling) - { - IsInstalling = false; - - Console.OnNewMessage -= OnInstallConsoleMessage; - - // After this call, the install terminal will disappear - await InvokeAsync(StateHasChanged); - - await ToastService.Info("Server installation complete"); - } - }; + Console.OnStateChange += async state => await HandleStateChange(state); Console.OnDisconnected += async () => { @@ -267,7 +237,7 @@ await InvokeAsync(StateHasChanged); return; } - + // We want to check if its an connection error, if yes we want to show the user that its an error with the connection // If not we proceed with the throwing for the soft error handler. @@ -288,6 +258,41 @@ } UpdateTimer = new Timer(async _ => { await InvokeAsync(StateHasChanged); }, null, TimeSpan.Zero, TimeSpan.FromSeconds(1)); + + var state = await ServerService.GetState(Server); + await HandleStateChange(state); + } + + private async Task HandleStateChange(ServerState state) + { + // General rerender to update the state text in the ui + // NOTE: Obsolete because of the update timer + //await InvokeAsync(StateHasChanged); + + // Change from offline to installing + // This will trigger the initialisation of the install view + if (state == ServerState.Installing && !IsInstalling) + { + IsInstalling = true; + + // After this call, we should have access to the install terminal reference + await InvokeAsync(StateHasChanged); + + Console.OnNewMessage += OnInstallConsoleMessage; + } + // Change from installing to offline + // This will trigger the destruction of the install view + else if (state == ServerState.Offline && IsInstalling) + { + IsInstalling = false; + + Console.OnNewMessage -= OnInstallConsoleMessage; + + // After this call, the install terminal will disappear + await InvokeAsync(StateHasChanged); + + await ToastService.Info("Server installation complete"); + } } private async Task OnInstallConsoleMessage(string message) @@ -334,7 +339,7 @@ case "/network": return 2; - + case "/schedules": return 7; diff --git a/Moonlight/Moonlight.csproj b/Moonlight/Moonlight.csproj index e37cfbe..df200a7 100644 --- a/Moonlight/Moonlight.csproj +++ b/Moonlight/Moonlight.csproj @@ -74,8 +74,7 @@ - - + @@ -114,6 +113,7 @@ <_ContentIncludedByDefault Remove="Features\FileManager\UI\Components\FileManager.razor" /> <_ContentIncludedByDefault Remove="Features\FileManager\UI\Components\FileUploader.razor" /> <_ContentIncludedByDefault Remove="Features\FileManager\UI\Components\FileView.razor" /> + <_ContentIncludedByDefault Remove="storage\configs\core.json" />