summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAAGaming <aa@mail.catvibers.me>2022-06-19 18:56:02 -0400
committerAAGaming <aa@mail.catvibers.me>2022-06-19 18:56:02 -0400
commitdaca482ed853c1b74649c6579b1094d8a8c27141 (patch)
tree6d6d949fd9796e4da8257bf874e1730d10517e76
parent99b4b939bdd2140aecf19ddb09a59b44e9cd117d (diff)
downloaddecky-loader-daca482ed853c1b74649c6579b1094d8a8c27141.tar.gz
decky-loader-daca482ed853c1b74649c6579b1094d8a8c27141.zip
fix onDismount
-rw-r--r--frontend/src/plugin-loader.tsx50
1 files changed, 11 insertions, 39 deletions
diff --git a/frontend/src/plugin-loader.tsx b/frontend/src/plugin-loader.tsx
index eb3344a3..6d0d24c6 100644
--- a/frontend/src/plugin-loader.tsx
+++ b/frontend/src/plugin-loader.tsx
@@ -4,7 +4,6 @@ import { FaPlug } from 'react-icons/fa';
import { DeckyState, DeckyStateContextProvider } from './components/DeckyState';
import LegacyPlugin from './components/LegacyPlugin';
import PluginView from './components/PluginView';
-import StorePage from './components/store/Store';
import TitleView from './components/TitleView';
import Logger from './logger';
import { Plugin } from './plugin';
@@ -22,10 +21,6 @@ class PluginLoader extends Logger {
private routerHook: RouterHook = new RouterHook();
private deckyState: DeckyState = new DeckyState();
- private reloadLock: boolean = false;
- // stores a list of plugin names which requested to be reloaded
- private pluginReloadQueue: string[] = [];
-
constructor() {
super(PluginLoader.name);
this.log('Initialized');
@@ -44,8 +39,6 @@ class PluginLoader extends Logger {
),
icon: <FaPlug />,
});
-
- this.routerHook.addRoute('/decky/store', () => <StorePage />);
}
public addPluginInstallPrompt(artifact: string, version: string, request_id: string) {
@@ -74,38 +67,18 @@ class PluginLoader extends Logger {
}
}
- public deinit() {
- this.routerHook.removeRoute('/decky/store');
- }
-
public async importPlugin(name: string) {
- try {
- if (this.reloadLock) {
- this.log('Reload currently in progress, adding to queue', name);
- this.pluginReloadQueue.push(name);
- return;
- }
-
- 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);
- if (name.startsWith('$LEGACY_')) {
- await this.importLegacyPlugin(name.replace('$LEGACY_', ''));
- } else {
- await this.importReactPlugin(name);
- }
- this.log(`Loaded ${name}`);
-
- this.deckyState.setPlugins(this.plugins);
- } catch (e) {
- throw e;
- } finally {
- this.reloadLock = false;
- const nextPlugin = this.pluginReloadQueue.shift();
- if (nextPlugin) {
- this.importPlugin(nextPlugin);
- }
+ 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);
+ if (name.startsWith('$LEGACY_')) {
+ await this.importLegacyPlugin(name.replace('$LEGACY_', ''));
+ } else {
+ await this.importReactPlugin(name);
}
+ this.log(`Loaded ${name}`);
+
+ this.deckyState.setPlugins(this.plugins);
}
private async importReactPlugin(name: string) {
@@ -114,8 +87,7 @@ class PluginLoader extends Logger {
let content = await eval(await res.text())(this.createPluginAPI(name));
this.plugins.push({
name: name,
- icon: content.icon,
- content: content.content,
+ ...content,
});
} else throw new Error(`${name} frontend_bundle not OK`);
}