summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/utilities.py2
-rw-r--r--frontend/package.json2
-rw-r--r--frontend/pnpm-lock.yaml8
-rw-r--r--frontend/src/components/QuickAccessVisibleState.tsx10
-rw-r--r--frontend/src/components/modals/filepicker/patches/library.ts11
-rw-r--r--frontend/src/components/settings/pages/developer/index.tsx2
-rw-r--r--frontend/src/components/store/Store.tsx2
-rw-r--r--frontend/src/steamfixes/index.ts2
-rw-r--r--frontend/src/steamfixes/reload.ts11
-rw-r--r--frontend/src/steamfixes/restart.ts7
-rw-r--r--frontend/src/tabs-hook.tsx17
-rw-r--r--frontend/src/utils/windows.ts4
-rw-r--r--frontend/tsconfig.json2
13 files changed, 37 insertions, 43 deletions
diff --git a/backend/utilities.py b/backend/utilities.py
index 7b0a5c89..618b1d3d 100644
--- a/backend/utilities.py
+++ b/backend/utilities.py
@@ -251,7 +251,7 @@ class Utilities:
enumerable: true,
configurable: true,
get: function() {
- return FocusNavController?.m_ActiveContext?.ActiveWindow || window;
+ return (GamepadNavTree?.m_context?.m_controller || FocusNavController)?.m_ActiveContext?.ActiveWindow || window;
}
});
""" + await res.text() + "\n}"
diff --git a/frontend/package.json b/frontend/package.json
index 1501f31d..bdceafb3 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -42,7 +42,7 @@
}
},
"dependencies": {
- "decky-frontend-lib": "^3.18.10",
+ "decky-frontend-lib": "^3.19.1",
"react-file-icon": "^1.2.0",
"react-icons": "^4.4.0",
"react-markdown": "^8.0.3",
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
index 6e6dc3c0..74abae33 100644
--- a/frontend/pnpm-lock.yaml
+++ b/frontend/pnpm-lock.yaml
@@ -11,7 +11,7 @@ specifiers:
'@types/react-file-icon': ^1.0.1
'@types/react-router': 5.1.18
'@types/webpack': ^5.28.0
- decky-frontend-lib: ^3.18.10
+ decky-frontend-lib: ^3.19.1
husky: ^8.0.1
import-sort-style-module: ^6.0.0
inquirer: ^8.2.4
@@ -31,7 +31,7 @@ specifiers:
typescript: ^4.7.4
dependencies:
- decky-frontend-lib: 3.18.10
+ decky-frontend-lib: 3.19.1
react-file-icon: 1.2.0_wcqkhtmu7mswc6yz4uyexck3ty
react-icons: 4.4.0_react@16.14.0
react-markdown: 8.0.3_vshvapmxg47tngu7tvrsqpq55u
@@ -975,8 +975,8 @@ packages:
dependencies:
ms: 2.1.2
- /decky-frontend-lib/3.18.10:
- resolution: {integrity: sha512-2mgbA3sSkuwQR/FnmhXVrcW6LyTS95IuL6muJAmQCruhBvXapDtjk1TcgxqMZxFZwGD1IPnemPYxHZll6IgnZw==}
+ /decky-frontend-lib/3.19.1:
+ resolution: {integrity: sha512-hU4+EFs74MGzUCv8l1AO2+EBj9RRbnpU19Crm4u+3lbLu6d63U2GsUeQ9ssmNRcOMY1OuVZkRoZBE58soOBJ3A==}
dev: false
/decode-named-character-reference/1.0.2:
diff --git a/frontend/src/components/QuickAccessVisibleState.tsx b/frontend/src/components/QuickAccessVisibleState.tsx
index 09babe84..ef977442 100644
--- a/frontend/src/components/QuickAccessVisibleState.tsx
+++ b/frontend/src/components/QuickAccessVisibleState.tsx
@@ -4,15 +4,11 @@ const QuickAccessVisibleState = createContext<boolean>(true);
export const useQuickAccessVisible = () => useContext(QuickAccessVisibleState);
-export const QuickAccessVisibleStateProvider: FC<{ initial: boolean; setter: ((val: boolean) => {}[]) | never[] }> = ({
- children,
- initial,
- setter,
-}) => {
+export const QuickAccessVisibleStateProvider: FC<{ initial: boolean; tab: any }> = ({ children, initial, tab }) => {
const [visible, setVisible] = useState<boolean>(initial);
const [prev, setPrev] = useState<boolean>(initial);
- // hack to use an array as a "pointer" to pass the setter up the tree
- setter[0] = setVisible;
+ // HACK but i can't think of a better way to do this
+ tab.qAMVisibilitySetter = setVisible;
if (initial != prev) {
setPrev(initial);
setVisible(initial);
diff --git a/frontend/src/components/modals/filepicker/patches/library.ts b/frontend/src/components/modals/filepicker/patches/library.ts
index 3abf824b..d398b83d 100644
--- a/frontend/src/components/modals/filepicker/patches/library.ts
+++ b/frontend/src/components/modals/filepicker/patches/library.ts
@@ -4,13 +4,6 @@ import Logger from '../../../../logger';
const logger = new Logger('LibraryPatch');
-declare global {
- interface Window {
- SteamClient: any;
- appDetailsStore: any;
- }
-}
-
let patch: Patch;
function rePatch() {
@@ -20,7 +13,9 @@ function rePatch() {
const details = window.appDetailsStore.GetAppDetails(appid);
logger.debug('game details', details);
// strShortcutStartDir
- const file = await window.DeckyPluginLoader.openFilePicker(details.strShortcutStartDir.replaceAll('"', ''));
+ const file = await window.DeckyPluginLoader.openFilePicker(
+ details?.strShortcutStartDir.replaceAll('"', '') || '/',
+ );
logger.debug('user selected', file);
window.SteamClient.Apps.SetShortcutExe(appid, JSON.stringify(file.path));
const pathArr = file.path.split('/');
diff --git a/frontend/src/components/settings/pages/developer/index.tsx b/frontend/src/components/settings/pages/developer/index.tsx
index d9859c46..bd80cb77 100644
--- a/frontend/src/components/settings/pages/developer/index.tsx
+++ b/frontend/src/components/settings/pages/developer/index.tsx
@@ -52,7 +52,7 @@ export default function DeveloperSettings() {
>
<Toggle
value={reactDevtoolsEnabled}
- disabled={reactDevtoolsIP == ''}
+ // disabled={reactDevtoolsIP == ''}
onChange={(toggleValue) => {
setReactDevtoolsEnabled(toggleValue);
setShouldConnectToReactDevTools(toggleValue);
diff --git a/frontend/src/components/store/Store.tsx b/frontend/src/components/store/Store.tsx
index 7a9c0e33..68f6c077 100644
--- a/frontend/src/components/store/Store.tsx
+++ b/frontend/src/components/store/Store.tsx
@@ -15,7 +15,7 @@ import Logger from '../../logger';
import { StorePlugin, getPluginList } from '../../store';
import PluginCard from './PluginCard';
-const logger = new Logger('FilePicker');
+const logger = new Logger('Store');
const StorePage: FC<{}> = () => {
const [currentTabRoute, setCurrentTabRoute] = useState<string>('browse');
diff --git a/frontend/src/steamfixes/index.ts b/frontend/src/steamfixes/index.ts
index 988f3bd7..fe0e3e05 100644
--- a/frontend/src/steamfixes/index.ts
+++ b/frontend/src/steamfixes/index.ts
@@ -7,6 +7,6 @@ export function deinitSteamFixes() {
}
export async function initSteamFixes() {
- fixes.push(reloadFix());
+ fixes.push(await reloadFix());
fixes.push(await restartFix());
}
diff --git a/frontend/src/steamfixes/reload.ts b/frontend/src/steamfixes/reload.ts
index e31f78fc..8635abdc 100644
--- a/frontend/src/steamfixes/reload.ts
+++ b/frontend/src/steamfixes/reload.ts
@@ -1,10 +1,17 @@
+import { getFocusNavController, sleep } from 'decky-frontend-lib';
+
import Logger from '../logger';
const logger = new Logger('ReloadSteamFix');
-export default function reloadFix() {
+declare global {
+ var GamepadNavTree: any;
+}
+
+export default async function reloadFix() {
// Hack to unbreak the ui when reloading it
- if (window.FocusNavController?.m_rgAllContexts?.length == 0) {
+ await sleep(4000);
+ if (getFocusNavController()?.m_rgAllContexts?.length == 0) {
SteamClient.URL.ExecuteSteamURL('steam://open/settings');
logger.log('Applied UI reload fix.');
}
diff --git a/frontend/src/steamfixes/restart.ts b/frontend/src/steamfixes/restart.ts
index 467efd6a..93fc08f7 100644
--- a/frontend/src/steamfixes/restart.ts
+++ b/frontend/src/steamfixes/restart.ts
@@ -4,13 +4,6 @@ import Logger from '../logger';
const logger = new Logger('RestartSteamFix');
-declare global {
- interface Window {
- SteamClient: any;
- appDetailsStore: any;
- }
-}
-
let patch: Patch;
function rePatch() {
diff --git a/frontend/src/tabs-hook.tsx b/frontend/src/tabs-hook.tsx
index d9c76ca6..3498b1aa 100644
--- a/frontend/src/tabs-hook.tsx
+++ b/frontend/src/tabs-hook.tsx
@@ -128,22 +128,23 @@ class TabsHook extends Logger {
let deckyTabAmount = existingTabs.reduce((prev: any, cur: any) => (cur.decky ? prev + 1 : prev), 0);
if (deckyTabAmount == this.tabs.length) {
for (let tab of existingTabs) {
- if (tab?.decky) tab.panel.props.setter[0](visible);
+ if (tab?.decky && tab?.qAMVisibilitySetter) tab?.qAMVisibilitySetter(visible);
}
return;
}
for (const { title, icon, content, id } of this.tabs) {
- existingTabs.push({
+ const tab: any = {
key: id,
title,
tab: icon,
decky: true,
- panel: (
- <QuickAccessVisibleStateProvider initial={visible} setter={[]}>
- {content}
- </QuickAccessVisibleStateProvider>
- ),
- });
+ };
+ tab.panel = (
+ <QuickAccessVisibleStateProvider initial={visible} tab={tab}>
+ {content}
+ </QuickAccessVisibleStateProvider>
+ );
+ existingTabs.push(tab);
}
}
}
diff --git a/frontend/src/utils/windows.ts b/frontend/src/utils/windows.ts
index 2b5181d8..a08f304a 100644
--- a/frontend/src/utils/windows.ts
+++ b/frontend/src/utils/windows.ts
@@ -1,7 +1,9 @@
+import { getFocusNavController } from '../../../../lib/dist';
+
export function findSP(): Window {
// old (SP as host)
if (document.title == 'SP') return window;
// new (SP as popup)
- return FocusNavController.m_ActiveContext.m_rgGamepadNavigationTrees.find((x: any) => x.m_ID == 'root_1_').Root
+ return getFocusNavController().m_ActiveContext.m_rgGamepadNavigationTrees.find((x: any) => x.m_ID == 'root_1_').Root
.Element.ownerDocument.defaultView;
}
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
index 6231d955..907c25e2 100644
--- a/frontend/tsconfig.json
+++ b/frontend/tsconfig.json
@@ -1,7 +1,7 @@
{
"compilerOptions": {
"module": "ESNext",
- "target": "ES2020",
+ "target": "ES2021",
"jsx": "react",
"jsxFactory": "window.SP_REACT.createElement",
"jsxFragmentFactory": "window.SP_REACT.Fragment",