summaryrefslogtreecommitdiff
path: root/frontend/src/components/QuickAccessVisibleState.tsx
diff options
context:
space:
mode:
authorTrainDoctor <traindoctor@protonmail.com>2022-10-30 10:32:05 -0700
committerGitHub <noreply@github.com>2022-10-30 10:32:05 -0700
commitbace5143d28c42ffcc83509b7fcdf02b6cae6934 (patch)
tree5a39a5980a84136df5a6781ba1e200d151112073 /frontend/src/components/QuickAccessVisibleState.tsx
parentf5fc2053847d3054d36d3348d21e7de060342698 (diff)
downloaddecky-loader-bace5143d28c42ffcc83509b7fcdf02b6cae6934.tar.gz
decky-loader-bace5143d28c42ffcc83509b7fcdf02b6cae6934.zip
Merge Tabs and Injection Fixes, bring back native Valve toaster (#238)
* Bring back component patch-based tabshook * better injection point * finally fix dumb loading error * fix QAM injection breaking after lock * shut up typescript * fix lock screen focusing issues * Bring back the Valve toaster! * Add support for stable steamos * fix focus bug on lock screen but actually * oops: remove extra console log * shut up typescript again * better fix for lockscreen bug * better probably * actually fix focus issues (WTF) Co-authored-by: AAGaming <aa@mail.catvibers.me>
Diffstat (limited to 'frontend/src/components/QuickAccessVisibleState.tsx')
-rw-r--r--frontend/src/components/QuickAccessVisibleState.tsx36
1 files changed, 15 insertions, 21 deletions
diff --git a/frontend/src/components/QuickAccessVisibleState.tsx b/frontend/src/components/QuickAccessVisibleState.tsx
index 4df7e1a1..09babe84 100644
--- a/frontend/src/components/QuickAccessVisibleState.tsx
+++ b/frontend/src/components/QuickAccessVisibleState.tsx
@@ -1,27 +1,21 @@
-import { FC, createContext, useContext, useEffect, useRef, useState } from 'react';
+import { FC, createContext, useContext, useState } from 'react';
const QuickAccessVisibleState = createContext<boolean>(true);
export const useQuickAccessVisible = () => useContext(QuickAccessVisibleState);
-export const QuickAccessVisibleStateProvider: FC<{}> = ({ children }) => {
- const divRef = useRef<HTMLDivElement>(null);
- const [visible, setVisible] = useState<boolean>(false);
- useEffect(() => {
- const doc: Document | void | null = divRef?.current?.ownerDocument;
- if (!doc) return;
- setVisible(doc.visibilityState == 'visible');
- const onChange = (e: Event) => {
- setVisible(doc.visibilityState == 'visible');
- };
- doc.addEventListener('visibilitychange', onChange);
- return () => {
- doc.removeEventListener('visibilitychange', onChange);
- };
- }, [divRef]);
- return (
- <div ref={divRef}>
- <QuickAccessVisibleState.Provider value={visible}>{children}</QuickAccessVisibleState.Provider>
- </div>
- );
+export const QuickAccessVisibleStateProvider: FC<{ initial: boolean; setter: ((val: boolean) => {}[]) | never[] }> = ({
+ children,
+ initial,
+ setter,
+}) => {
+ 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;
+ if (initial != prev) {
+ setPrev(initial);
+ setVisible(initial);
+ }
+ return <QuickAccessVisibleState.Provider value={visible}>{children}</QuickAccessVisibleState.Provider>;
};