mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 54 lines 1.5 kB view raw
1import React from 'react' 2 3import * as persisted from '#/state/persisted' 4 5type StateContext = persisted.Schema['largeAltBadgeEnabled'] 6type SetContext = (v: persisted.Schema['largeAltBadgeEnabled']) => void 7 8const stateContext = React.createContext<StateContext>( 9 persisted.defaults.largeAltBadgeEnabled, 10) 11stateContext.displayName = 'LargeAltBadgeStateContext' 12const setContext = React.createContext<SetContext>( 13 (_: persisted.Schema['largeAltBadgeEnabled']) => {}, 14) 15setContext.displayName = 'LargeAltBadgeSetContext' 16 17export function Provider({children}: React.PropsWithChildren<{}>) { 18 const [state, setState] = React.useState( 19 persisted.get('largeAltBadgeEnabled'), 20 ) 21 22 const setStateWrapped = React.useCallback( 23 (largeAltBadgeEnabled: persisted.Schema['largeAltBadgeEnabled']) => { 24 setState(largeAltBadgeEnabled) 25 persisted.write('largeAltBadgeEnabled', largeAltBadgeEnabled) 26 }, 27 [setState], 28 ) 29 30 React.useEffect(() => { 31 return persisted.onUpdate( 32 'largeAltBadgeEnabled', 33 nextLargeAltBadgeEnabled => { 34 setState(nextLargeAltBadgeEnabled) 35 }, 36 ) 37 }, [setStateWrapped]) 38 39 return ( 40 <stateContext.Provider value={state}> 41 <setContext.Provider value={setStateWrapped}> 42 {children} 43 </setContext.Provider> 44 </stateContext.Provider> 45 ) 46} 47 48export function useLargeAltBadgeEnabled() { 49 return React.useContext(stateContext) 50} 51 52export function useSetLargeAltBadgeEnabled() { 53 return React.useContext(setContext) 54}