Extend client timeout to 14 days, improve plugin setup flow, and refine app behavior after sleep mode

This commit is contained in:
Thorsten Sommer 2025-04-24 09:48:39 +02:00
parent fdca581c90
commit 75442a1241
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
4 changed files with 19 additions and 15 deletions

View File

@ -175,17 +175,18 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, IDis
_ = Task.Run(async () => _ = Task.Run(async () =>
{ {
// Set up the plugin system: // Set up the plugin system:
PluginFactory.Setup(); if (PluginFactory.Setup())
{
// Ensure that all internal plugins are present:
await PluginFactory.EnsureInternalPlugins();
// Ensure that all internal plugins are present: // Load (but not start) all plugins, without waiting for them:
await PluginFactory.EnsureInternalPlugins(); var pluginLoadingTimeout = new CancellationTokenSource(TimeSpan.FromSeconds(5));
await PluginFactory.LoadAll(pluginLoadingTimeout.Token);
// Load (but not start) all plugins, without waiting for them: // Set up hot reloading for plugins:
var pluginLoadingTimeout = new CancellationTokenSource(TimeSpan.FromSeconds(5)); PluginFactory.SetUpHotReloading();
await PluginFactory.LoadAll(pluginLoadingTimeout.Token); }
// Set up hot reloading for plugins:
PluginFactory.SetUpHotReloading();
}); });
} }

View File

@ -130,7 +130,7 @@ internal sealed class Program
.AddHubOptions(options => .AddHubOptions(options =>
{ {
options.MaximumReceiveMessageSize = null; options.MaximumReceiveMessageSize = null;
options.ClientTimeoutInterval = TimeSpan.FromSeconds(1_200); options.ClientTimeoutInterval = TimeSpan.FromDays(14);
options.HandshakeTimeout = TimeSpan.FromSeconds(30); options.HandshakeTimeout = TimeSpan.FromSeconds(30);
}); });

View File

@ -20,10 +20,10 @@ public static partial class PluginFactory
/// Set up the plugin factory. We will read the data directory from the settings manager. /// Set up the plugin factory. We will read the data directory from the settings manager.
/// Afterward, we will create the plugins directory and the internal plugin directory. /// Afterward, we will create the plugins directory and the internal plugin directory.
/// </summary> /// </summary>
public static void Setup() public static bool Setup()
{ {
if(IS_INITIALIZED) if(IS_INITIALIZED)
return; return false;
DATA_DIR = SettingsManager.DataDirectory!; DATA_DIR = SettingsManager.DataDirectory!;
PLUGINS_ROOT = Path.Join(DATA_DIR, "plugins"); PLUGINS_ROOT = Path.Join(DATA_DIR, "plugins");
@ -34,6 +34,8 @@ public static partial class PluginFactory
HOT_RELOAD_WATCHER = new(PLUGINS_ROOT); HOT_RELOAD_WATCHER = new(PLUGINS_ROOT);
IS_INITIALIZED = true; IS_INITIALIZED = true;
return true;
} }
public static void Dispose() public static void Dispose()

View File

@ -2,4 +2,5 @@
- Added the user-language, as provided by the OS, to the about page. This helps in identifying user-specific issues related to language settings. - Added the user-language, as provided by the OS, to the about page. This helps in identifying user-specific issues related to language settings.
- Changed the terminology from "temporary chats" to "disappearing chats" in the UI. This makes it clearer to understand the purpose of these chats. - Changed the terminology from "temporary chats" to "disappearing chats" in the UI. This makes it clearer to understand the purpose of these chats.
- Improved the hot reloading of the plugin system to prevent overlapping reloads. - Improved the hot reloading of the plugin system to prevent overlapping reloads.
- Improved the app behavior when the user system was waked up from sleep mode.
- Fixed the color for the update notification button to match the color theme. - Fixed the color for the update notification button to match the color theme.