From f0379e5d19279863b571e66918bc9107efedb612 Mon Sep 17 00:00:00 2001 From: Beebles <102569435+beebls@users.noreply.github.com> Date: Mon, 12 Dec 2022 16:48:52 -0700 Subject: [PATCH] fix(Router): update Router interface to SteamOS3.4 and add Navigation (#52) --- src/deck-components/Router.tsx | 100 ++++++++++++++++++++++++++------- 1 file changed, 79 insertions(+), 21 deletions(-) diff --git a/src/deck-components/Router.tsx b/src/deck-components/Router.tsx index 53c7706..252aba2 100644 --- a/src/deck-components/Router.tsx +++ b/src/deck-components/Router.tsx @@ -63,28 +63,38 @@ export type AppOverview = { sort_as: string; }; -export interface Router { - CloseSideMenus(): void; - OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void; - GetQuickAccessTab(): QuickAccessTab; - Navigate(path: string): void; - NavigateBackOrOpenMenu(): void; - NavigateToAppProperties(): void; - NavigateToBugForum(): void; - NavigateToExternalWeb(url: string): void; - NavigateToHelp(): void; - NavigateToInvites(): void; - NavigateToRunningApp(replace?: boolean): void; - NavigateToStorage(): void; - NavigateToStore(): void; - NavigateToStoreApp(appId: number | string): void; - NavigateToStoreFreeToPlay(): void; - NavigateToStoreManual(): void; - NavigateToStoreNewReleases(): void; - NavigateToStoreOnSale(): void; - ToggleSideMenu(sideMenu: SideMenu): void; - CloseSideMenus(): void; +export interface MenuStore { OpenSideMenu(sideMenu: SideMenu): void; + OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void; + OpenMainMenu(): void; +} + +export interface WindowRouter { + BrowserWindow: Window; + MenuStore: MenuStore; + Navigate(path: string): void; + NavigateToChat(): void; + NavigateToSteamWeb(url: string): void; + NavigateBack(): void; + NavigateToWebRoute(unknown?: any, unknown2?: any): void; +} + +export interface WindowStore { + GamepadUIMainWindowInstance?: WindowRouter; // Current + SteamUIWindows: WindowRouter[]; + OverlayWindows: WindowRouter[]; // Used by desktop GamepadUI +} + +export interface Router { + WindowStore?: WindowStore; + CloseSideMenus(): void; + Navigate(path: string): void; + NavigateToAppProperties(): void; + NavigateToExternalWeb(url: string): void; + NavigateToInvites(): void; + NavigateToChat(): void; + NavigateToLibraryTab(): void; + NavigateToLayoutPreview(e: unknown): void; OpenPowerMenu(unknown?: any): void; get RunningApps(): AppOverview[]; get MainRunningApp(): AppOverview | undefined; @@ -96,3 +106,51 @@ export const Router = findModuleChild((m: Module) => { if (m[prop]?.Navigate && m[prop]?.NavigationManager) return m[prop]; } }) as Router; + +export interface Navigation { + Navigate(path: string): void; + NavigateBack(): void; + NavigateToAppProperties(): void; + NavigateToExternalWeb(url: string): void; + NavigateToInvites(): void; + NavigateToChat(): void; + NavigateToLibraryTab(): void; + NavigateToLayoutPreview(e: unknown): void; + NavigateToSteamWeb(url: string): void; + NavigateToWebRoute(unknown?: any, unknown2?: any): void; + OpenSideMenu(sideMenu: SideMenu): void; + OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void; + OpenMainMenu(): void; + OpenPowerMenu(unknown?: any): void; + CloseSideMenus(): void; +} + +export const Navigation = { + Navigate: Router.Navigate.bind(Router), + NavigateBack: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateBack.bind( + Router.WindowStore.GamepadUIMainWindowInstance, + ), + NavigateToAppProperties: Router.NavigateToAppProperties.bind(Router), + NavigateToExternalWeb: Router.NavigateToExternalWeb.bind(Router), + NavigateToInvites: Router.NavigateToInvites.bind(Router), + NavigateToChat: Router.NavigateToChat.bind(Router), + NavigateToLibraryTab: Router.NavigateToLibraryTab.bind(Router), + NavigateToLayoutPreview: Router.NavigateToLayoutPreview.bind(Router), + NavigateToSteamWeb: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateToSteamWeb.bind( + Router.WindowStore.GamepadUIMainWindowInstance, + ), + NavigateToWebRoute: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateToWebRoute.bind( + Router.WindowStore.GamepadUIMainWindowInstance, + ), + OpenSideMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenSideMenu.bind( + Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, + ), + OpenQuickAccessMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenQuickAccessMenu.bind( + Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, + ), + OpenMainMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenMainMenu.bind( + Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, + ), + CloseSideMenus: Router.CloseSideMenus.bind(Router), + OpenPowerMenu: Router.OpenPowerMenu.bind(Router), +} as Navigation;