diff options
| author | AAGaming <aagaming@riseup.net> | 2024-07-18 01:20:29 -0400 |
|---|---|---|
| committer | AAGaming <aagaming@riseup.net> | 2024-08-03 14:04:19 -0400 |
| commit | 88e7919a12fd56b297e73afb3fb05483f5893f4d (patch) | |
| tree | 4b6920d6f8675e6d6de8f2de0df4b4477746a879 /frontend/src/tabs-hook.tsx | |
| parent | 28c7254ef6952d9504472ebcbb05238b50aa6086 (diff) | |
| download | decky-loader-88e7919a12fd56b297e73afb3fb05483f5893f4d.tar.gz decky-loader-88e7919a12fd56b297e73afb3fb05483f5893f4d.zip | |
implement new toaster hook
this also supports the notification list and probably also desktop toasts (UI wip, read location enum prop from toast component probably)
Diffstat (limited to 'frontend/src/tabs-hook.tsx')
| -rw-r--r-- | frontend/src/tabs-hook.tsx | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/frontend/src/tabs-hook.tsx b/frontend/src/tabs-hook.tsx index dbf6ca35..34b5f592 100644 --- a/frontend/src/tabs-hook.tsx +++ b/frontend/src/tabs-hook.tsx @@ -1,5 +1,14 @@ // TabsHook for versions after the Desktop merge -import { ErrorBoundary, Patch, QuickAccessTab, afterPatch, createReactTreePatcher, findInReactTree, findModuleByExport, getReactRoot, setReactPatcherLoggingEnabled, sleep } from '@decky/ui'; +import { + ErrorBoundary, + Patch, + QuickAccessTab, + afterPatch, + createReactTreePatcher, + findInReactTree, + findModuleByExport, + getReactRoot, +} from '@decky/ui'; import { QuickAccessVisibleStateProvider } from './components/QuickAccessVisibleState'; import Logger from './logger'; @@ -20,9 +29,7 @@ interface Tab { class TabsHook extends Logger { // private keys = 7; tabs: Tab[] = []; - private qAMRoot?: any; private qamPatch?: Patch; - private cachedTabs: any; constructor() { super('TabsHook'); @@ -34,25 +41,29 @@ class TabsHook extends Logger { init() { // TODO patch the "embedded" renderer in this module too (seems to be for VR? unsure) - const qamModule = findModuleByExport(e => e?.type?.toString()?.includes("QuickAccessMenuBrowserView")); - const qamRenderer = Object.values(qamModule).find((e: any) => e?.type?.toString()?.includes("QuickAccessMenuBrowserView")) + const qamModule = findModuleByExport((e) => e?.type?.toString()?.includes('QuickAccessMenuBrowserView')); + const qamRenderer = Object.values(qamModule).find((e: any) => + e?.type?.toString()?.includes('QuickAccessMenuBrowserView'), + ); - const patchHandler = createReactTreePatcher([ - tree => findInReactTree(tree, node => node?.props?.onFocusNavDeactivated) - ], (args, ret) => { - this.log("qam render", args, ret); - const tabs = findInReactTree(ret, (x) => x?.props?.tabs); - this.render(tabs.props.tabs, args[0].visible); - return ret; - }, "TabsHook"); + const patchHandler = createReactTreePatcher( + [(tree) => findInReactTree(tree, (node) => node?.props?.onFocusNavDeactivated)], + (args, ret) => { + this.log('qam render', args, ret); + const tabs = findInReactTree(ret, (x) => x?.props?.tabs); + this.render(tabs.props.tabs, args[0].visible); + return ret; + }, + 'TabsHook', + ); - this.qamPatch = afterPatch(qamRenderer, "type", patchHandler); + this.qamPatch = afterPatch(qamRenderer, 'type', patchHandler); // Patch already rendered qam const root = getReactRoot(document.getElementById('root') as any); const qamNode = root && findInReactTree(root, (n: any) => n.elementType == qamRenderer); // need elementType, because type is actually mobx wrapper if (qamNode) { - this.debug("qamNode", qamNode); + this.debug('qamNode', qamNode); // Only affects this fiber node so we don't need to unpatch here qamNode.type = qamNode.elementType.type; if (qamNode?.alternate) { |
