feat(router): types for steam router

This commit is contained in:
Jonas Dellinger
2022-06-04 10:33:59 +02:00
parent 43b04b267e
commit 62bf0eaffa
3 changed files with 44 additions and 13 deletions

View File

@@ -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;

View File

@@ -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';

View File

@@ -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;
})
});