diff options
Diffstat (limited to 'frontend/src/plugin-loader.tsx')
| -rw-r--r-- | frontend/src/plugin-loader.tsx | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/frontend/src/plugin-loader.tsx b/frontend/src/plugin-loader.tsx index c42065c7..b8729168 100644 --- a/frontend/src/plugin-loader.tsx +++ b/frontend/src/plugin-loader.tsx @@ -87,16 +87,21 @@ class PluginLoader extends Logger { } this.log(`Trying to load ${name}`); - let find = this.plugins.find((x) => x.name == name); - if (find) this.plugins.splice(this.plugins.indexOf(find), 1); + + const oldPlugin = this.plugins.find((plugin) => plugin.name === name); + if (oldPlugin) { + oldPlugin.onDismount?.(); + this.plugins = this.plugins.filter((plugin) => plugin !== oldPlugin); + } + if (name.startsWith('$LEGACY_')) { await this.importLegacyPlugin(name.replace('$LEGACY_', '')); } else { await this.importReactPlugin(name); } - this.log(`Loaded ${name}`); this.deckyState.setPlugins(this.plugins); + this.log(`Loaded ${name}`); } catch (e) { throw e; } finally { |
