Hardened background work against disconnected circuits (#937)

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2026-08-25 18:53:09 +02:00
1 parent 99089f853e
commit f03c2d1c88
44 files changed
+500 -126

No files matched your search

@@ -54,6 +54,9 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan
[Inject]
private MudTheme ColorTheme { get; init; } = null!;
[Inject]
private CircuitStateService CircuitState { get; init; } = null!;
private ILanguagePlugin Lang { get; set; } = PluginFactory.BaseLanguage;
@@ -110,7 +113,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan
await this.SettingsManager.LoadSettings();
// Register this component with the message bus:
this.MessageBus.RegisterComponent(this);
this.MessageBus.RegisterComponent(this, this.CircuitState);
this.MessageBus.ApplyFilters(this, [],
[
Event.UPDATE_AVAILABLE, Event.CONFIGURATION_CHANGED, Event.COLOR_THEME_CHANGED, Event.SHOW_ERROR,
@@ -234,7 +237,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan
this.LoadNavItems();
this.StateHasChanged();
if (this.startupCompleted)
_ = this.EnsureMandatoryInfosAcceptedAsync();
this.EnsureMandatoryInfosAcceptedAsync().Observe($"{nameof(MainLayout)}: mandatory infos after a configuration change");
break;
case Event.COLOR_THEME_CHANGED:
@@ -281,7 +284,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan
break;
case Event.STARTUP_PLUGIN_SYSTEM:
_ = Task.Run(async () =>
Task.Run(async () =>
{
// Set up the plugin system:
if (PluginFactory.Setup())
@@ -336,7 +339,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan
PluginFactory.SetUpHotReloading();
await this.MessageBus.SendMessage<bool>(this, Event.STARTUP_COMPLETED);
}
});
}).Observe($"{nameof(MainLayout)}: setting up the plugin system");
break;
case Event.PLUGINS_RELOADED:
@@ -347,12 +350,12 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan
await this.InvokeAsync(this.StateHasChanged);
if (this.startupCompleted)
_ = this.EnsureMandatoryInfosAcceptedAsync();
this.EnsureMandatoryInfosAcceptedAsync().Observe($"{nameof(MainLayout)}: mandatory infos after a plugin reload");
break;
case Event.STARTUP_COMPLETED:
this.startupCompleted = true;
_ = this.EnsureMandatoryInfosAcceptedAsync();
this.EnsureMandatoryInfosAcceptedAsync().Observe($"{nameof(MainLayout)}: mandatory infos after the startup");
break;
}
});
@@ -399,11 +402,11 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan
/// <summary>Refreshes navigation activity colors when a media import changes state.</summary>
private void OnMediaImportStateChanged(MediaImportOwner owner)
{
_ = this.InvokeAsync(() =>
this.InvokeAsync(() =>
{
this.LoadNavItems();
this.StateHasChanged();
});
}).Observe($"{nameof(MainLayout)}: refreshing the navigation after a media import change");
}
private IEnumerable<NavBarItem> GetNavItems()