diff options
| -rw-r--r-- | backend/main.py | 41 | ||||
| -rw-r--r-- | backend/utilities.py | 2 | ||||
| -rw-r--r-- | frontend/package.json | 2 | ||||
| -rw-r--r-- | frontend/pnpm-lock.yaml | 8 |
4 files changed, 29 insertions, 24 deletions
diff --git a/backend/main.py b/backend/main.py index 563755ca..7af513b3 100644 --- a/backend/main.py +++ b/backend/main.py @@ -134,15 +134,20 @@ class PluginManager: await tab.open_websocket() await tab.enable() await self.inject_javascript(tab, True) - async for msg in tab.listen_for_message(): - logger.debug("Page event: " + str(msg.get("method", None))) - if msg.get("method", None) == "Page.domContentEventFired": - if not await tab.has_global_var("deckyHasLoaded", False): - await self.inject_javascript(tab) - if msg.get("method", None) == "Inspector.detached": - logger.info("Steam is exiting...") - await tab.close_websocket() - break + try: + async for msg in tab.listen_for_message(): + logger.debug("Page event: " + str(msg.get("method", None))) + if msg.get("method", None) == "Page.domContentEventFired": + if not await tab.has_global_var("deckyHasLoaded", False): + await self.inject_javascript(tab) + if msg.get("method", None) == "Inspector.detached": + logger.info("Steam is exiting...") + await tab.close_websocket() + break + except Exception as e: + logger.error("Exception while reading page events " + format_exc()) + await tab.close_websocket() + pass # while True: # await sleep(5) # if not await tab.has_global_var("deckyHasLoaded", False): @@ -152,15 +157,15 @@ class PluginManager: async def inject_javascript(self, tab: Tab, first=False, request=None): logger.info("Loading Decky frontend!") try: - if first: - if await tab.has_global_var("deckyHasLoaded", False): - tabs = await get_tabs() - for t in tabs: - if t.title != "Steam" and t.title != "SP": - logger.debug("Closing tab: " + getattr(t, "title", "Untitled")) - await t.close() - await sleep(0.5) - await tab.evaluate_js("try{if (window.deckyHasLoaded){setTimeout(() => location.reload(), 1000)}window.deckyHasLoaded = true;(async()=>{while(!window.SP_REACT){await new Promise(r => setTimeout(r, 10))};await import('http://localhost:1337/frontend/index.js')})();}catch(e){console.error(e)}", False, False, False) + # if first: + # if await tab.has_global_var("deckyHasLoaded", False): + # tabs = await get_tabs() + # for t in tabs: + # if t.title != "Steam" and t.title != "SP": + # logger.debug("Closing tab: " + getattr(t, "title", "Untitled")) + # await t.close() + # await sleep(0.5) + await tab.evaluate_js("try{if (window.deckyHasLoaded){setTimeout(() => SteamClient.User.StartRestart(), 100)}else{window.deckyHasLoaded = true;(async()=>{while(!window.SP_REACT){await new Promise(r => setTimeout(r, 10))};await import('http://localhost:1337/frontend/index.js')})();}}catch(e){console.error(e)}", False, False, False) except: logger.info("Failed to inject JavaScript into tab\n" + format_exc()) pass diff --git a/backend/utilities.py b/backend/utilities.py index 8351f3e0..61e6b523 100644 --- a/backend/utilities.py +++ b/backend/utilities.py @@ -261,5 +261,5 @@ class Utilities: self.logger.info("Disabling React DevTools") tab = await get_gamepadui_tab() self.rdt_script_id = None - await tab.evaluate_js("location.reload();", False, True, False) + await tab.evaluate_js("SteamClient.User.StartRestart();", False, True, False) self.logger.info("React DevTools disabled") diff --git a/frontend/package.json b/frontend/package.json index 782144ab..4bb4bc3a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -41,7 +41,7 @@ } }, "dependencies": { - "decky-frontend-lib": "^3.7.12", + "decky-frontend-lib": "^3.7.14", "react-file-icon": "^1.2.0", "react-icons": "^4.4.0", "react-markdown": "^8.0.3", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 33d0a624..cf33748b 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,7 +10,7 @@ specifiers: '@types/react-file-icon': ^1.0.1 '@types/react-router': 5.1.18 '@types/webpack': ^5.28.0 - decky-frontend-lib: ^3.7.12 + decky-frontend-lib: ^3.7.14 husky: ^8.0.1 import-sort-style-module: ^6.0.0 inquirer: ^8.2.4 @@ -30,7 +30,7 @@ specifiers: typescript: ^4.7.4 dependencies: - decky-frontend-lib: 3.7.12 + decky-frontend-lib: 3.7.14 react-file-icon: 1.2.0_wcqkhtmu7mswc6yz4uyexck3ty react-icons: 4.4.0_react@16.14.0 react-markdown: 8.0.3_vshvapmxg47tngu7tvrsqpq55u @@ -944,8 +944,8 @@ packages: dependencies: ms: 2.1.2 - /decky-frontend-lib/3.7.12: - resolution: {integrity: sha512-whDV9zHuEBFj17zKoT51aRcUxLvSzBNu2lc242/EO9aFFP064FVCrJu+r7CxWe0hlQ7sA4FKX1qgCwsZ6H+PZg==} + /decky-frontend-lib/3.7.14: + resolution: {integrity: sha512-ShAoP3VqiwkJYukDBHsOF9fk7wYw0VaKpHw6j9WdzLxwZwBcg0J7QBNIFYP3nfA0UgEwSJVEg/22kONiplipmA==} dev: false /decode-named-character-reference/1.0.2: |
