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