mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-04-28 07:19:47 +00:00
Provide user feedback when no update was found (#16)
This commit is contained in:
parent
d6e80a4563
commit
15e8fbc6ca
@ -20,10 +20,13 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver
|
|||||||
private MessageBus MessageBus { get; init; } = null!;
|
private MessageBus MessageBus { get; init; } = null!;
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
public IDialogService DialogService { get; init; } = null!;
|
private IDialogService DialogService { get; init; } = null!;
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
public Rust Rust { get; init; } = null!;
|
private Rust Rust { get; init; } = null!;
|
||||||
|
|
||||||
|
[Inject]
|
||||||
|
private ISnackbar Snackbar { get; init; } = null!;
|
||||||
|
|
||||||
public string AdditionalHeight { get; private set; } = "0em";
|
public string AdditionalHeight { get; private set; } = "0em";
|
||||||
|
|
||||||
@ -56,7 +59,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver
|
|||||||
this.MessageBus.ApplyFilters(this, [], [ Event.UPDATE_AVAILABLE, Event.USER_SEARCH_FOR_UPDATE ]);
|
this.MessageBus.ApplyFilters(this, [], [ Event.UPDATE_AVAILABLE, Event.USER_SEARCH_FOR_UPDATE ]);
|
||||||
|
|
||||||
// Set the js runtime for the update service:
|
// Set the js runtime for the update service:
|
||||||
UpdateService.SetJsRuntime(this.JsRuntime);
|
UpdateService.SetBlazorDependencies(this.JsRuntime, this.Snackbar);
|
||||||
|
|
||||||
await base.OnInitializedAsync();
|
await base.OnInitializedAsync();
|
||||||
}
|
}
|
||||||
|
@ -6,11 +6,12 @@ namespace AIStudio.Tools;
|
|||||||
|
|
||||||
public sealed class UpdateService : BackgroundService, IMessageBusReceiver
|
public sealed class UpdateService : BackgroundService, IMessageBusReceiver
|
||||||
{
|
{
|
||||||
// We cannot inject IJSRuntime into our service. This is due to the fact that
|
// We cannot inject IJSRuntime into our service. This is because
|
||||||
// the service is not a Blaozor component. We need to pass the IJSRuntime from
|
// the service is not a Blazor component. We need to pass the IJSRuntime from
|
||||||
// the MainLayout component to the service.
|
// the MainLayout component to the service.
|
||||||
private static IJSRuntime? JS_RUNTIME;
|
private static IJSRuntime? JS_RUNTIME;
|
||||||
private static bool IS_INITALIZED;
|
private static bool IS_INITIALIZED;
|
||||||
|
private static ISnackbar? SNACKBAR;
|
||||||
|
|
||||||
private readonly SettingsManager settingsManager;
|
private readonly SettingsManager settingsManager;
|
||||||
private readonly TimeSpan updateInterval;
|
private readonly TimeSpan updateInterval;
|
||||||
@ -22,7 +23,7 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver
|
|||||||
this.settingsManager = settingsManager;
|
this.settingsManager = settingsManager;
|
||||||
this.messageBus = messageBus;
|
this.messageBus = messageBus;
|
||||||
this.rust = rust;
|
this.rust = rust;
|
||||||
|
|
||||||
this.messageBus.RegisterComponent(this);
|
this.messageBus.RegisterComponent(this);
|
||||||
this.ApplyFilters([], [ Event.USER_SEARCH_FOR_UPDATE ]);
|
this.ApplyFilters([], [ Event.USER_SEARCH_FOR_UPDATE ]);
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver
|
|||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
while (!stoppingToken.IsCancellationRequested && !IS_INITALIZED)
|
while (!stoppingToken.IsCancellationRequested && !IS_INITIALIZED)
|
||||||
{
|
{
|
||||||
await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken);
|
await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken);
|
||||||
}
|
}
|
||||||
@ -68,7 +69,7 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver
|
|||||||
switch (triggeredEvent)
|
switch (triggeredEvent)
|
||||||
{
|
{
|
||||||
case Event.USER_SEARCH_FOR_UPDATE:
|
case Event.USER_SEARCH_FOR_UPDATE:
|
||||||
await this.CheckForUpdate();
|
await this.CheckForUpdate(notifyUserWhenNoUpdate: true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -85,9 +86,9 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private async Task CheckForUpdate()
|
private async Task CheckForUpdate(bool notifyUserWhenNoUpdate = false)
|
||||||
{
|
{
|
||||||
if(!IS_INITALIZED)
|
if(!IS_INITIALIZED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var response = await this.rust.CheckForUpdate(JS_RUNTIME!);
|
var response = await this.rust.CheckForUpdate(JS_RUNTIME!);
|
||||||
@ -95,11 +96,24 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver
|
|||||||
{
|
{
|
||||||
await this.messageBus.SendMessage(null, Event.UPDATE_AVAILABLE, response);
|
await this.messageBus.SendMessage(null, Event.UPDATE_AVAILABLE, response);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (notifyUserWhenNoUpdate)
|
||||||
|
{
|
||||||
|
SNACKBAR!.Add("No update found.", Severity.Normal, config =>
|
||||||
|
{
|
||||||
|
config.Icon = Icons.Material.Filled.Update;
|
||||||
|
config.IconSize = Size.Large;
|
||||||
|
config.IconColor = Color.Primary;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetJsRuntime(IJSRuntime jsRuntime)
|
public static void SetBlazorDependencies(IJSRuntime jsRuntime, ISnackbar snackbar)
|
||||||
{
|
{
|
||||||
|
SNACKBAR = snackbar;
|
||||||
JS_RUNTIME = jsRuntime;
|
JS_RUNTIME = jsRuntime;
|
||||||
IS_INITALIZED = true;
|
IS_INITIALIZED = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user