diff options
| author | AAGaming <aa@mail.catvibers.me> | 2022-08-21 16:41:25 -0400 |
|---|---|---|
| committer | AAGaming <aa@mail.catvibers.me> | 2022-08-21 16:41:25 -0400 |
| commit | 8b3f569a09db9daf7748426f916a66591159928f (patch) | |
| tree | 237cc3711c7098b30a7e7cda97db9e406b0f7db0 /backend | |
| parent | 1930400032a850b833f5f71523008e326f40547a (diff) | |
| download | decky-loader-8b3f569a09db9daf7748426f916a66591159928f.tar.gz decky-loader-8b3f569a09db9daf7748426f916a66591159928f.zip | |
Add plugin updater, notification badge, fixesv2.0.5-pre15
Diffstat (limited to 'backend')
| -rw-r--r-- | backend/loader.py | 8 | ||||
| -rw-r--r-- | backend/main.py | 2 | ||||
| -rw-r--r-- | backend/plugin.py | 6 |
3 files changed, 11 insertions, 5 deletions
diff --git a/backend/loader.py b/backend/loader.py index 3f5d1ab8..4fe104d1 100644 --- a/backend/loader.py +++ b/backend/loader.py @@ -88,7 +88,7 @@ class Loader: async def get_plugins(self, request): plugins = list(self.plugins.values()) - return web.json_response([str(i) if not i.legacy else "$LEGACY_"+str(i) for i in plugins]) + return web.json_response([{"name": str(i) if not i.legacy else "$LEGACY_"+str(i), "version": i.version} for i in plugins]) def handle_frontend_assets(self, request): plugin = self.plugins[request.match_info["plugin_name"]] @@ -116,13 +116,13 @@ class Loader: self.logger.info(f"Plugin {plugin.name} is passive") self.plugins[plugin.name] = plugin.start() self.logger.info(f"Loaded {plugin.name}") - self.loop.create_task(self.dispatch_plugin(plugin.name if not plugin.legacy else "$LEGACY_" + plugin.name)) + self.loop.create_task(self.dispatch_plugin(plugin.name if not plugin.legacy else "$LEGACY_" + plugin.name, plugin.version)) except Exception as e: self.logger.error(f"Could not load {file}. {e}") print_exc() - async def dispatch_plugin(self, name): - await inject_to_tab("SP", f"window.importDeckyPlugin('{name}')") + async def dispatch_plugin(self, name, version): + await inject_to_tab("SP", f"window.importDeckyPlugin('{name}', '{version}')") def import_plugins(self): self.logger.info(f"import plugins from {self.plugin_path}") diff --git a/backend/main.py b/backend/main.py index 07e82d92..a5730fbd 100644 --- a/backend/main.py +++ b/backend/main.py @@ -113,7 +113,7 @@ class PluginManager: async def inject_javascript(self, request=None): try: - await inject_to_tab("SP", "try{" + open(path.join(path.dirname(__file__), "./static/plugin-loader.iife.js"), "r").read() + "}catch(e){console.error(e)}", True) + await inject_to_tab("SP", "try{window.deckyHasLoaded = true;(async()=>{while(!window.SP_REACT){await new Promise(r => setTimeout(r, 10))};" + open(path.join(path.dirname(__file__), "./static/plugin-loader.iife.js"), "r").read() + "})();}catch(e){console.error(e)}", True) except: logger.info("Failed to inject JavaScript into tab") pass diff --git a/backend/plugin.py b/backend/plugin.py index 0a8a2901..f55e398c 100644 --- a/backend/plugin.py +++ b/backend/plugin.py @@ -21,7 +21,13 @@ class PluginWrapper: self.socket_addr = f"/tmp/plugin_socket_{time()}" self.method_call_lock = Lock() + self.version = None + json = load(open(path.join(plugin_path, plugin_directory, "plugin.json"), "r")) + if path.isfile(path.join(plugin_path, plugin_directory, "package.json")): + package_json = load(open(path.join(plugin_path, plugin_directory, "package.json"), "r")) + self.version = package_json["version"] + self.legacy = False self.main_view_html = json["main_view_html"] if "main_view_html" in json else "" |
