summaryrefslogtreecommitdiff
path: root/frontend/src/plugin-loader.tsx
diff options
context:
space:
mode:
authorAAGaming <aagaming@riseup.net>2024-08-08 15:26:40 -0400
committerAAGaming <aagaming@riseup.net>2024-08-08 15:26:40 -0400
commit93b3919325b328fe95674b35b6c0b5efa69243f0 (patch)
tree7bc4c45f32b74ce9059bd11052448d28a154ed4e /frontend/src/plugin-loader.tsx
parent7a161a5b833b55a31329f9f80116e09498f38368 (diff)
downloaddecky-loader-93b3919325b328fe95674b35b6c0b5efa69243f0.tar.gz
decky-loader-93b3919325b328fe95674b35b6c0b5efa69243f0.zip
fix reloading pluginsv3.0.0-pre9
Diffstat (limited to 'frontend/src/plugin-loader.tsx')
-rw-r--r--frontend/src/plugin-loader.tsx15
1 files changed, 9 insertions, 6 deletions
diff --git a/frontend/src/plugin-loader.tsx b/frontend/src/plugin-loader.tsx
index 4e0a01e9..1dc73372 100644
--- a/frontend/src/plugin-loader.tsx
+++ b/frontend/src/plugin-loader.tsx
@@ -79,7 +79,7 @@ class PluginLoader extends Logger {
private reloadLock: boolean = false;
// stores a list of plugin names which requested to be reloaded
- private pluginReloadQueue: { name: string; version?: string }[] = [];
+ private pluginReloadQueue: { name: string; version?: string; loadType: PluginLoadType }[] = [];
private loaderUpdateToast?: ToastNotification;
private pluginUpdateToast?: ToastNotification;
@@ -369,11 +369,11 @@ class PluginLoader extends Logger {
this.errorBoundaryHook.deinit();
}
- public unloadPlugin(name: string) {
+ public unloadPlugin(name: string, skipStateUpdate: boolean = false) {
const plugin = this.plugins.find((plugin) => plugin.name === name);
plugin?.onDismount?.();
this.plugins = this.plugins.filter((p) => p !== plugin);
- this.deckyState.setPlugins(this.plugins);
+ if (!skipStateUpdate) this.deckyState.setPlugins(this.plugins);
}
public async importPlugin(
@@ -384,7 +384,7 @@ class PluginLoader extends Logger {
) {
if (useQueue && this.reloadLock) {
this.log('Reload currently in progress, adding to queue', name);
- this.pluginReloadQueue.push({ name, version: version });
+ this.pluginReloadQueue.push({ name, version: version, loadType });
return;
}
@@ -392,7 +392,7 @@ class PluginLoader extends Logger {
if (useQueue) this.reloadLock = true;
this.log(`Trying to load ${name}`);
- this.unloadPlugin(name);
+ this.unloadPlugin(name, true);
const startTime = performance.now();
await this.importReactPlugin(name, version, loadType);
const endTime = performance.now();
@@ -406,7 +406,7 @@ class PluginLoader extends Logger {
this.reloadLock = false;
const nextPlugin = this.pluginReloadQueue.shift();
if (nextPlugin) {
- this.importPlugin(nextPlugin.name, nextPlugin.version);
+ this.importPlugin(nextPlugin.name, nextPlugin.version, loadType);
}
}
}
@@ -428,6 +428,7 @@ class PluginLoader extends Logger {
...plugin,
name: name,
version: version,
+ loadType,
});
break;
@@ -447,6 +448,7 @@ class PluginLoader extends Logger {
...plugin,
name: name,
version: version,
+ loadType,
});
} else throw new Error(`${name} frontend_bundle not OK`);
break;
@@ -484,6 +486,7 @@ class PluginLoader extends Logger {
version: version,
content: <TheError />,
icon: <FaExclamationCircle />,
+ loadType,
});
this.toaster.toast({
title: (