mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import React from 'react'
2import {SharedValue, useSharedValue} from 'react-native-reanimated'
3
4type StateContext = {
5 headerHeight: SharedValue<number>
6 footerHeight: SharedValue<number>
7}
8
9const stateContext = React.createContext<StateContext>({
10 headerHeight: {
11 value: 0,
12 addListener() {},
13 removeListener() {},
14 modify() {},
15 get() {
16 return 0
17 },
18 set() {},
19 },
20 footerHeight: {
21 value: 0,
22 addListener() {},
23 removeListener() {},
24 modify() {},
25 get() {
26 return 0
27 },
28 set() {},
29 },
30})
31
32export function Provider({children}: React.PropsWithChildren<{}>) {
33 const headerHeight = useSharedValue(0)
34 const footerHeight = useSharedValue(0)
35
36 const value = React.useMemo(
37 () => ({
38 headerHeight,
39 footerHeight,
40 }),
41 [headerHeight, footerHeight],
42 )
43
44 return <stateContext.Provider value={value}>{children}</stateContext.Provider>
45}
46
47export function useShellLayout() {
48 return React.useContext(stateContext)
49}