this repo has no description
0
fork

Configure Feed

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

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