diff options
| author | Jonas Dellinger <jonas@dellinger.dev> | 2022-06-20 15:34:08 +0200 |
|---|---|---|
| committer | Jonas Dellinger <jonas@dellinger.dev> | 2022-06-20 15:34:08 +0200 |
| commit | 711af3bca352923901c48a4ceb7d9506545ec622 (patch) | |
| tree | 8caab4b3f5c9ef03efbd1f5daa99c1c9e5a8b061 | |
| parent | 9a6930571c4e8f6501e6b49cf50ba9525760b507 (diff) | |
| download | decky-loader-711af3bca352923901c48a4ceb7d9506545ec622.tar.gz decky-loader-711af3bca352923901c48a4ceb7d9506545ec622.zip | |
Fix onDismount
| -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 { |
