Migrated the update check function from Tauri JS to the runtime API

This commit is contained in:
tsommer committed 2024-08-28 08:57:40 +02:00
1 parent 1d12facd58
commit a41a86165f
4 files changed
+57 -53

No files matched your search

@@ -85,8 +85,8 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, IDis
this.MessageBus.RegisterComponent(this);
this.MessageBus.ApplyFilters(this, [], [ Event.UPDATE_AVAILABLE, Event.USER_SEARCH_FOR_UPDATE, Event.CONFIGURATION_CHANGED ]);
// Set the js runtime for the update service:
UpdateService.SetBlazorDependencies(this.JsRuntime, this.Snackbar);
// Set the snackbar for the update service:
UpdateService.SetBlazorDependencies(this.Snackbar);
TemporaryChatService.Initialize();
// Should the navigation bar be open by default?
+15 -3
View File
@@ -118,10 +118,22 @@ public sealed class Rust(string apiPort) : IDisposable
}
}
public async Task<UpdateResponse> CheckForUpdate(IJSRuntime jsRuntime)
public async Task<UpdateResponse> CheckForUpdate()
{
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(16));
return await jsRuntime.InvokeAsync<UpdateResponse>("window.__TAURI__.invoke", cts.Token, "check_for_update");
try
{
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(16));
return await this.http.GetFromJsonAsync<UpdateResponse>("/updates/check", cts.Token);
}
catch (Exception e)
{
this.logger!.LogError(e, "Failed to check for an update.");
return new UpdateResponse
{
Error = true,
UpdateIsAvailable = false,
};
}
}
public async Task InstallUpdate(IJSRuntime jsRuntime)
@@ -7,10 +7,6 @@ namespace AIStudio.Tools.Services;
public sealed class UpdateService : BackgroundService, IMessageBusReceiver
{
// We cannot inject IJSRuntime into our service. This is because
// the service is not a Blazor component. We need to pass the IJSRuntime from
// the MainLayout component to the service.
private static IJSRuntime? JS_RUNTIME;
private static bool IS_INITIALIZED;
private static ISnackbar? SNACKBAR;
@@ -96,7 +92,7 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver
if(!IS_INITIALIZED)
return;
var response = await this.rust.CheckForUpdate(JS_RUNTIME!);
var response = await this.rust.CheckForUpdate();
if (response.UpdateIsAvailable)
{
await this.messageBus.SendMessage(null, Event.UPDATE_AVAILABLE, response);
@@ -115,10 +111,9 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver
}
}
public static void SetBlazorDependencies(IJSRuntime jsRuntime, ISnackbar snackbar)
public static void SetBlazorDependencies(ISnackbar snackbar)
{
SNACKBAR = snackbar;
JS_RUNTIME = jsRuntime;
IS_INITIALIZED = true;
}
}