Something went wrong. Try again.
Bluesky app fork with some witchin' additions 💫 forked from jollywhoppers.com/witchsky.app
Something went wrong. Try again.
1.0 kB · 50 lines
TSX
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import React from 'react'import {type SharedValue, useSharedValue} from 'react-native-reanimated'
type StateContext = { headerHeight: SharedValue<number> footerHeight: SharedValue<number>}
const stateContext = React.createContext<StateContext>({ headerHeight: { value: 0, addListener() {}, removeListener() {}, modify() {}, get() { return 0 }, set() {}, }, footerHeight: { value: 0, addListener() {}, removeListener() {}, modify() {}, get() { return 0 }, set() {}, },})stateContext.displayName = 'ShellLayoutContext'
export function Provider({children}: React.PropsWithChildren<{}>) { const headerHeight = useSharedValue(0) const footerHeight = useSharedValue(0)
const value = React.useMemo( () => ({ headerHeight, footerHeight, }), [headerHeight, footerHeight], )
return <stateContext.Provider value={value}>{children}</stateContext.Provider>}
export function useShellLayout() { return React.useContext(stateContext)}