From 34d1a34b10f4386865f3c241c5ae4026d2bfd8bd Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sat, 5 Aug 2023 01:11:43 -0400 Subject: Migrate most of frontend callServerMethod usage over to websocket --- backend/decky_loader/utilities.py | 98 ++++++++++++++++++--------------------- backend/decky_loader/wsrouter.py | 5 +- 2 files changed, 48 insertions(+), 55 deletions(-) (limited to 'backend') diff --git a/backend/decky_loader/utilities.py b/backend/decky_loader/utilities.py index 20280c24..2eea63ea 100644 --- a/backend/decky_loader/utilities.py +++ b/backend/decky_loader/utilities.py @@ -66,6 +66,21 @@ class Utilities: context.ws.add_route("utilities/ping", self.ping) context.ws.add_route("utilities/settings/get", self.get_setting) context.ws.add_route("utilities/settings/set", self.set_setting) + context.ws.add_route("utilities/install_plugin", self.install_plugin) + context.ws.add_route("utilities/install_plugins", self.install_plugins) + context.ws.add_route("utilities/cancel_plugin_install", self.cancel_plugin_install) + context.ws.add_route("utilities/confirm_plugin_install", self.confirm_plugin_install) + context.ws.add_route("utilities/uninstall_plugin", self.uninstall_plugin) + context.ws.add_route("utilities/execute_in_tab", self.execute_in_tab) + context.ws.add_route("utilities/inject_css_into_tab", self.inject_css_into_tab) + context.ws.add_route("utilities/remove_css_from_tab", self.remove_css_from_tab) + context.ws.add_route("utilities/allow_remote_debugging", self.allow_remote_debugging) + context.ws.add_route("utilities/disallow_remote_debugging", self.disallow_remote_debugging) + context.ws.add_route("utilities/filepicker_ls", self.filepicker_ls) + context.ws.add_route("utilities/disable_rdt", self.disable_rdt) + context.ws.add_route("utilities/enable_rdt", self.enable_rdt) + context.ws.add_route("utilities/get_tab_id", self.get_tab_id) + context.ws.add_route("utilities/get_user_info", self.get_user_info) async def _handle_server_method_call(self, request): method_name = request.match_info["method_name"] @@ -139,62 +154,39 @@ class Utilities: "result": e } - async def inject_css_into_tab(self, tab: str, style: str): - try: - css_id = str(uuid.uuid4()) - - result = await inject_to_tab(tab, - f""" - (function() {{ - const style = document.createElement('style'); - style.id = "{css_id}"; - document.head.append(style); - style.textContent = `{style}`; - }})() - """, False) - - if result and "exceptionDetails" in result["result"]: - return { - "success": False, - "result": result["result"] - } + async def inject_css_into_tab(self, tab: str, style: str) -> str: + css_id = str(uuid.uuid4()) - return { - "success": True, - "result": css_id - } - except Exception as e: - return { - "success": False, - "result": e - } + result = await inject_to_tab(tab, + f""" + (function() {{ + const style = document.createElement('style'); + style.id = "{css_id}"; + document.head.append(style); + style.textContent = `{style}`; + }})() + """, False) + + if "exceptionDetails" in result["result"]: + raise result["result"]["exceptionDetails"] + + return css_id async def remove_css_from_tab(self, tab: str, css_id: str): - try: - result = await inject_to_tab(tab, - f""" - (function() {{ - let style = document.getElementById("{css_id}"); + result = await inject_to_tab(tab, + f""" + (function() {{ + let style = document.getElementById("{css_id}"); - if (style.nodeName.toLowerCase() == 'style') - style.parentNode.removeChild(style); - }})() - """, False) + if (style.nodeName.toLowerCase() == 'style') + style.parentNode.removeChild(style); + }})() + """, False) - if result and "exceptionDetails" in result["result"]: - return { - "success": False, - "result": result - } + if "exceptionDetails" in result["result"]: + raise result["result"]["exceptionDetails"] - return { - "success": True - } - except Exception as e: - return { - "success": False, - "result": e - } + return async def get_setting(self, key: str, default: Any): return self.context.settings.getSetting(key, default) @@ -211,12 +203,12 @@ class Utilities: return True async def filepicker_ls(self, - path : str | None = None, + path: str | None = None, include_files: bool = True, include_folders: bool = True, - include_ext: list[str] = [], + include_ext: list[str] | None = None, include_hidden: bool = False, - order_by: str = "name_asc", + order_by: str = "name_desc", filter_for: str | None = None, page: int = 1, max: int = 1000): diff --git a/backend/decky_loader/wsrouter.py b/backend/decky_loader/wsrouter.py index 2b4c3a3b..7a7b59c9 100644 --- a/backend/decky_loader/wsrouter.py +++ b/backend/decky_loader/wsrouter.py @@ -79,7 +79,7 @@ class WSRouter: match data["type"]: case MessageType.CALL.value: # do stuff with the message - if self.routes[data["route"]]: + if data["route"] in self.routes: try: res = await self.routes[data["route"]](*data["args"]) await self.write({"type": MessageType.REPLY.value, "id": data["id"], "result": res}) @@ -87,7 +87,8 @@ class WSRouter: except: await self.write({"type": MessageType.ERROR.value, "id": data["id"], "error": format_exc()}) else: - await self.write({"type": MessageType.ERROR.value, "id": data["id"], "error": "Route does not exist."}) + # Dunno why but fstring doesnt work here + await self.write({"type": MessageType.ERROR.value, "id": data["id"], "error": "Route " + data["route"] + " does not exist."}) case MessageType.REPLY.value: if self.running_calls[data["id"]]: self.running_calls[data["id"]].set_result(data["result"]) -- cgit v1.2.3