diff options
| author | Weblate <noreply@weblate.org> | 2023-06-02 10:07:20 +0000 |
|---|---|---|
| committer | Weblate <noreply@weblate.org> | 2023-06-02 10:07:20 +0000 |
| commit | 935de1ad0ce517892947fa913aae6fc3ed94f814 (patch) | |
| tree | 68e44661bd99168fc82330dc65d8556979d801d4 /backend | |
| parent | 9542708c92ee3a1a926181634d752a2068aa463f (diff) | |
| parent | 2e8e0fc7c153cdeae055f4f0a7158afbae0e3485 (diff) | |
| download | decky-loader-935de1ad0ce517892947fa913aae6fc3ed94f814.tar.gz decky-loader-935de1ad0ce517892947fa913aae6fc3ed94f814.zip | |
Merge remote-tracking branch 'origin/main'
Diffstat (limited to 'backend')
| -rw-r--r-- | backend/loader.py | 17 | ||||
| -rw-r--r-- | backend/locales/en-US.json | 5 | ||||
| -rw-r--r-- | backend/utilities.py | 8 |
3 files changed, 24 insertions, 6 deletions
diff --git a/backend/loader.py b/backend/loader.py index d8b97bbd..d07b1c08 100644 --- a/backend/loader.py +++ b/backend/loader.py @@ -62,19 +62,19 @@ class Loader: self.logger = getLogger("Loader") self.plugin_path = plugin_path self.logger.info(f"plugin_path: {self.plugin_path}") - self.plugins = {} + self.plugins : dict[str, PluginWrapper] = {} self.watcher = None self.live_reload = live_reload + self.reload_queue = Queue() + self.loop.create_task(self.handle_reloads()) if live_reload: - self.reload_queue = Queue() self.observer = Observer() self.watcher = FileChangeHandler(self.reload_queue, plugin_path) self.observer.schedule(self.watcher, self.plugin_path, recursive=True) self.observer.start() - self.loop.create_task(self.handle_reloads()) self.loop.create_task(self.enable_reload_wait()) - + server_instance.add_routes([ web.get("/frontend/{path:.*}", self.handle_frontend_assets), web.get("/locales/{path:.*}", self.handle_frontend_locales), @@ -82,6 +82,7 @@ class Loader: web.get("/plugins/{plugin_name}/frontend_bundle", self.handle_frontend_bundle), web.post("/plugins/{plugin_name}/methods/{method_name}", self.handle_plugin_method_call), web.get("/plugins/{plugin_name}/assets/{path:.*}", self.handle_plugin_frontend_assets), + web.post("/plugins/{plugin_name}/reload", self.handle_backend_reload_request), # The following is legacy plugin code. web.get("/plugins/load_main/{name}", self.load_plugin_main_view), @@ -217,3 +218,11 @@ class Loader: return web.Response(text=await tab.get_steam_resource(f"https://steamloopback.host/{request.match_info['path']}"), content_type="text/html") except Exception as e: return web.Response(text=str(e), status=400) + + async def handle_backend_reload_request(self, request): + plugin_name : str = request.match_info["plugin_name"] + plugin = self.plugins[plugin_name] + + await self.reload_queue.put((plugin.file, plugin.plugin_directory)) + + return web.Response(status=200)
\ No newline at end of file diff --git a/backend/locales/en-US.json b/backend/locales/en-US.json index 12a33f37..a347351b 100644 --- a/backend/locales/en-US.json +++ b/backend/locales/en-US.json @@ -100,6 +100,11 @@ } }, "SettingsDeveloperIndex": { + "cef_console": { + "button": "Open Console", + "desc": "Opens the CEF Console. Only useful for debugging purposes. Stuff here is potentially dangerous and should only be used if you are a plugin dev, or are directed here by one.", + "label": "CEF Console" + }, "header": "Other", "react_devtools": { "desc": "Enables connection to a computer running React DevTools. Changing this setting will reload Steam. Set the IP address before enabling.", diff --git a/backend/utilities.py b/backend/utilities.py index 94f5e26b..45a32d3e 100644 --- a/backend/utilities.py +++ b/backend/utilities.py @@ -7,7 +7,7 @@ from asyncio import sleep, start_server, gather, open_connection from aiohttp import ClientSession, web from logging import getLogger -from injector import inject_to_tab, get_gamepadui_tab, close_old_tabs +from injector import inject_to_tab, get_gamepadui_tab, close_old_tabs, get_tab import helpers import subprocess from localplatform import service_stop, service_start @@ -32,7 +32,8 @@ class Utilities: "get_setting": self.get_setting, "filepicker_ls": self.filepicker_ls, "disable_rdt": self.disable_rdt, - "enable_rdt": self.enable_rdt + "enable_rdt": self.enable_rdt, + "get_tab_id": self.get_tab_id } self.logger = getLogger("Utilities") @@ -287,3 +288,6 @@ class Utilities: await close_old_tabs() await tab.evaluate_js("location.reload();", False, True, False) self.logger.info("React DevTools disabled") + + async def get_tab_id(self, name): + return (await get_tab(name)).id |
