diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-12-12 17:46:19 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-12 17:46:19 +0000 |
commit | ffc63dc85fc191a51c3dc12c1afcd250f95036d5 (patch) | |
tree | d48124c74c24662abf9ee28ff6fbbdd4b1d8ee99 /src/view/com/pager/PagerHeaderContext.tsx | |
parent | 4b32b0a71be4669fa0741efc46d646093c3114f5 (diff) | |
download | voidsky-ffc63dc85fc191a51c3dc12c1afcd250f95036d5.tar.zst |
[Layout] Bleed profile banner into safe area (#6967)
* bleed profile banner into safe area (cherry picked from commit 50b3a4d0c6fd94b583ffe4efa65de35c81ae7f4e) * pointer events none when hidden (cherry picked from commit bae2c7b2dd6d7f858a98812196628308c0877755) * fix web (cherry picked from commit e3f9597170375f2903b6e567b963f008ec95aed1) * add status bar shadow * rm log * rm mini header * speed up animation * pass bool rather than int in light status bar
Diffstat (limited to 'src/view/com/pager/PagerHeaderContext.tsx')
-rw-r--r-- | src/view/com/pager/PagerHeaderContext.tsx | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/view/com/pager/PagerHeaderContext.tsx b/src/view/com/pager/PagerHeaderContext.tsx index fd4cc7463..c979f7a6d 100644 --- a/src/view/com/pager/PagerHeaderContext.tsx +++ b/src/view/com/pager/PagerHeaderContext.tsx @@ -1,40 +1,48 @@ import React, {useContext} from 'react' import {SharedValue} from 'react-native-reanimated' -import {isIOS} from '#/platform/detection' +import {isNative} from '#/platform/detection' -export const PagerHeaderContext = - React.createContext<SharedValue<number> | null>(null) +export const PagerHeaderContext = React.createContext<{ + scrollY: SharedValue<number> + headerHeight: number +} | null>(null) /** - * Passes the scrollY value to the pager header's banner, so it can grow on - * overscroll on iOS. Not necessary to use this context provider on other platforms. + * Passes information about the scroll position and header height down via + * context for the pager header to consume. * - * @platform ios + * @platform ios, android */ export function PagerHeaderProvider({ scrollY, + headerHeight, children, }: { scrollY: SharedValue<number> + headerHeight: number children: React.ReactNode }) { + const value = React.useMemo( + () => ({scrollY, headerHeight}), + [scrollY, headerHeight], + ) return ( - <PagerHeaderContext.Provider value={scrollY}> + <PagerHeaderContext.Provider value={value}> {children} </PagerHeaderContext.Provider> ) } export function usePagerHeaderContext() { - const scrollY = useContext(PagerHeaderContext) - if (isIOS) { - if (!scrollY) { + const ctx = useContext(PagerHeaderContext) + if (isNative) { + if (!ctx) { throw new Error( 'usePagerHeaderContext must be used within a HeaderProvider', ) } - return {scrollY} + return ctx } else { return null } |