diff options
| author | TrainDoctor <traindoctor@protonmail.com> | 2022-10-30 10:32:05 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-30 10:32:05 -0700 |
| commit | bace5143d28c42ffcc83509b7fcdf02b6cae6934 (patch) | |
| tree | 5a39a5980a84136df5a6781ba1e200d151112073 /frontend/src/components/QuickAccessVisibleState.tsx | |
| parent | f5fc2053847d3054d36d3348d21e7de060342698 (diff) | |
| download | decky-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.tsx | 36 |
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>; }; |
