diff options
Diffstat (limited to 'src/state/shell')
-rw-r--r-- | src/state/shell/light-status-bar.tsx | 49 |
1 files changed, 11 insertions, 38 deletions
diff --git a/src/state/shell/light-status-bar.tsx b/src/state/shell/light-status-bar.tsx index 6f47689d1..80df9ad90 100644 --- a/src/state/shell/light-status-bar.tsx +++ b/src/state/shell/light-status-bar.tsx @@ -1,44 +1,17 @@ -import {createContext, useContext, useEffect, useState} from 'react' - -import {isWeb} from '#/platform/detection' - -const LightStatusBarRefCountContext = createContext<boolean>(false) -const SetLightStatusBarRefCountContext = createContext<React.Dispatch< - React.SetStateAction<number> -> | null>(null) - -export function useLightStatusBar() { - return useContext(LightStatusBarRefCountContext) -} +import {useEffect} from 'react' +import {SystemBars} from 'react-native-edge-to-edge' export function useSetLightStatusBar(enabled: boolean) { - const setRefCount = useContext(SetLightStatusBarRefCountContext) useEffect(() => { - // noop on web -sfn - if (isWeb) return - - if (!setRefCount) { - if (__DEV__) - console.error( - 'useLightStatusBar was used without a SetLightStatusBarRefCountContext provider', - ) - return - } if (enabled) { - setRefCount(prev => prev + 1) - return () => setRefCount(prev => prev - 1) + const entry = SystemBars.pushStackEntry({ + style: { + statusBar: 'light', + }, + }) + return () => { + SystemBars.popStackEntry(entry) + } } - }, [enabled, setRefCount]) -} - -export function Provider({children}: React.PropsWithChildren<{}>) { - const [refCount, setRefCount] = useState(0) - - return ( - <SetLightStatusBarRefCountContext.Provider value={setRefCount}> - <LightStatusBarRefCountContext.Provider value={refCount > 0}> - {children} - </LightStatusBarRefCountContext.Provider> - </SetLightStatusBarRefCountContext.Provider> - ) + }, [enabled]) } |