From 62bf0eaffa83d85245a038ffe3819315bd02f045 Mon Sep 17 00:00:00 2001 From: Jonas Dellinger Date: Sat, 4 Jun 2022 10:33:59 +0200 Subject: [PATCH] feat(router): types for steam router --- src/deck-components/Router.tsx | 36 ++++++++++++++++++++++++++++++++++ src/deck-components/index.ts | 3 ++- src/webpack.ts | 18 ++++++----------- 3 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 src/deck-components/Router.tsx diff --git a/src/deck-components/Router.tsx b/src/deck-components/Router.tsx new file mode 100644 index 0000000..7c5fc19 --- /dev/null +++ b/src/deck-components/Router.tsx @@ -0,0 +1,36 @@ +import { Module, findModuleChild } from '../webpack'; + +export enum SideMenu { + None, + Main, + QuickAccess, +} + +export enum QuickAccessTabs { + Notifications, + RemotePlayTogetherControls, + VoiceChat, + Friends, + Settings, + Perf, + Help, + Decky, +} + +interface Router { + CloseSideMenus(): void; + OpenQuickAccessMenu(quickAccessTab: QuickAccessTabs): void; + NavigateToExternalWeb(url: string): void; + ToggleSideMenu(sideMenu: SideMenu): void; + CloseSideMenus(): void; + OpenSideMenu(sideMenu: SideMenu): void; + OpenPowerMenu(unknown?: any): void; + get RunningApps(): any; +} + +export const Router = findModuleChild((m: Module) => { + if (typeof m !== 'object') return undefined; + for (let prop in m) { + if (m[prop]?.Navigate && m[prop]?.NavigationManager) return m[prop]; + } +}) as Router; diff --git a/src/deck-components/index.ts b/src/deck-components/index.ts index 3896a7c..e95cad2 100755 --- a/src/deck-components/index.ts +++ b/src/deck-components/index.ts @@ -3,8 +3,9 @@ export * from './ButtonItem'; export * from './Menu'; export * from './Modal'; export * from './Panel'; +export * from './Router'; export * from './Slider'; -export * from './SteamSpinner'; export * from './Spinner'; export * from './static-classes'; +export * from './SteamSpinner'; export * from './Toggle'; diff --git a/src/webpack.ts b/src/webpack.ts index b335d12..3025d22 100644 --- a/src/webpack.ts +++ b/src/webpack.ts @@ -5,7 +5,7 @@ declare global { } // TODO -type Module = any; +export type Module = any; type FilterFn = (module: any) => boolean; type FindFn = (module: any) => any; @@ -59,23 +59,17 @@ export const CommonUIModule = allModules.find((m: Module) => { }); export const IconsModule = findModule((m: Module) => { - if (typeof m !== "object") return false; + if (typeof m !== 'object') return false; for (let prop in m) { if (m[prop]?.toString && /Spinner\)}\),.\.createElement\(\"path\",{d:\"M18 /.test(m[prop].toString())) return true; } return false; -}) -export const Router = findModuleChild((m: Module) => { - if (typeof m !== "object") return undefined; - for (let prop in m) { - if (m[prop]?.Navigate && m[prop]?.NavigationManager) return m[prop] - } -}) +}); export const ReactRouter = allModules.find((m: Module) => { - if (typeof m !== "object") return undefined; + if (typeof m !== 'object') return undefined; for (let prop in m) { - if (m[prop]?.computeRootMatch) return true + if (m[prop]?.computeRootMatch) return true; } return false; -}) \ No newline at end of file +});