diff options
| author | Jonas Dellinger <jonas@dellinger.dev> | 2022-05-31 18:05:26 +0200 |
|---|---|---|
| committer | Jonas Dellinger <jonas@dellinger.dev> | 2022-05-31 18:05:26 +0200 |
| commit | bd1b2e82fdc6ff1725bab61593e1f54d0b975fe0 (patch) | |
| tree | db0e867be4088ff226f8b9a9cd5d1e01bec5ba0e | |
| parent | 660e34664ee749f59e43620e541c72fd21a2284a (diff) | |
| download | decky-loader-bd1b2e82fdc6ff1725bab61593e1f54d0b975fe0.tar.gz decky-loader-bd1b2e82fdc6ff1725bab61593e1f54d0b975fe0.zip | |
Move store opening to frontend only
| -rw-r--r-- | backend/utilities.py | 35 | ||||
| -rw-r--r-- | frontend/src/components/PluginView.tsx | 14 | ||||
| -rw-r--r-- | frontend/src/components/TitleView.tsx | 16 |
3 files changed, 26 insertions, 39 deletions
diff --git a/backend/utilities.py b/backend/utilities.py index 983bb790..d69b9bfa 100644 --- a/backend/utilities.py +++ b/backend/utilities.py @@ -1,7 +1,10 @@ +import uuid +from json.decoder import JSONDecodeError + from aiohttp import ClientSession, web + from injector import inject_to_tab -from json.decoder import JSONDecodeError -import uuid + class Utilities: def __init__(self, context) -> None: @@ -12,8 +15,7 @@ class Utilities: "confirm_plugin_install": self.confirm_plugin_install, "execute_in_tab": self.execute_in_tab, "inject_css_into_tab": self.inject_css_into_tab, - "remove_css_from_tab": self.remove_css_from_tab, - "open_plugin_store": self.open_plugin_store + "remove_css_from_tab": self.remove_css_from_tab } if context: @@ -53,7 +55,7 @@ class Utilities: async def ping(self, **kwargs): return "pong" - async def execute_in_tab(self, tab, run_async, code): + async def execute_in_tab(self, tab, run_async, code): try: result = await inject_to_tab(tab, code, run_async) if "exceptionDetails" in result["result"]: @@ -67,7 +69,7 @@ class Utilities: "result" : result["result"]["result"].get("value") } except Exception as e: - return { + return { "success": False, "result": e } @@ -76,7 +78,7 @@ class Utilities: try: css_id = str(uuid.uuid4()) - result = await inject_to_tab(tab, + result = await inject_to_tab(tab, f""" (function() {{ const style = document.createElement('style'); @@ -97,14 +99,14 @@ class Utilities: "result" : css_id } except Exception as e: - return { + return { "success": False, "result": e } async def remove_css_from_tab(self, tab, css_id): try: - result = await inject_to_tab(tab, + result = await inject_to_tab(tab, f""" (function() {{ let style = document.getElementById("{css_id}"); @@ -124,20 +126,7 @@ class Utilities: "success": True } except Exception as e: - return { + return { "success": False, "result": e } - - async def open_plugin_store(self): - await inject_to_tab("SP", """ - (function() { - wpRequire = webpackJsonp.push([[], { get_require: (mod, _exports, wpRequire) => mod.exports = wpRequire }, [["get_require"]]]); - const all = () => Object.keys(wpRequire.c).map((x) => wpRequire.c[x].exports).filter((x) => x); - router = all().map(m => { - if (typeof m !== "object") return undefined; - for (let prop in m) { if (m[prop]?.Navigate) return m[prop]} - }).find(x => x) - router.NavigateToExternalWeb("http://127.0.0.1:1337/browser/redirect") - })(); - """)
\ No newline at end of file diff --git a/frontend/src/components/PluginView.tsx b/frontend/src/components/PluginView.tsx index 4bc159e2..78bb22c2 100644 --- a/frontend/src/components/PluginView.tsx +++ b/frontend/src/components/PluginView.tsx @@ -1,12 +1,17 @@ -import { ButtonItem, DialogButton, PanelSection, PanelSectionRow } from 'decky-frontend-lib'; +import { ButtonItem, DialogButton, PanelSection, PanelSectionRow, Router } from 'decky-frontend-lib'; import { VFC } from 'react'; -import { FaArrowLeft } from 'react-icons/fa'; +import { FaArrowLeft, FaStore } from 'react-icons/fa'; import { useDeckyState } from './DeckyState'; const PluginView: VFC = () => { const { plugins, activePlugin, setActivePlugin, closeActivePlugin } = useDeckyState(); + const onStoreClick = () => { + Router.CloseSideMenus(); + Router.NavigateToExternalWeb('http://127.0.0.1:1337/browser/redirect'); + }; + if (activePlugin) { return ( <div style={{ height: '100%' }}> @@ -22,6 +27,11 @@ const PluginView: VFC = () => { return ( <PanelSection> + <div style={{ position: 'absolute', top: '3px', right: '16px', zIndex: 20 }}> + <DialogButton style={{ minWidth: 0, padding: '10px 12px' }} onClick={onStoreClick}> + <FaStore style={{ display: 'block' }} /> + </DialogButton> + </div> {plugins.map(({ name, icon }) => ( <PanelSectionRow key={name}> <ButtonItem layout="below" onClick={() => setActivePlugin(name)}> diff --git a/frontend/src/components/TitleView.tsx b/frontend/src/components/TitleView.tsx index 8ca81028..4b4a6825 100644 --- a/frontend/src/components/TitleView.tsx +++ b/frontend/src/components/TitleView.tsx @@ -1,25 +1,13 @@ -import { DialogButton, staticClasses } from 'decky-frontend-lib'; +import { staticClasses } from 'decky-frontend-lib'; import { VFC } from 'react'; -import { FaShoppingBag } from 'react-icons/fa'; import { useDeckyState } from './DeckyState'; const TitleView: VFC = () => { const { activePlugin } = useDeckyState(); - const openPluginStore = () => fetch('http://127.0.0.1:1337/methods/open_plugin_store', { method: 'POST' }); - if (activePlugin === null) { - return ( - <div className={staticClasses.Title}> - Decky - <div style={{ position: 'absolute', top: '3px', right: '16px', zIndex: 20 }}> - <DialogButton style={{ minWidth: 0, padding: '10px 12px' }} onClick={openPluginStore}> - <FaShoppingBag style={{ display: 'block' }} /> - </DialogButton> - </div> - </div> - ); + return <div className={staticClasses.Title}>Decky</div>; } return ( |
