summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/loader.py17
-rw-r--r--backend/locales/en-US.json5
-rw-r--r--backend/utilities.py8
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