import React from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['requireAltTextEnabled'] type SetContext = (v: persisted.Schema['requireAltTextEnabled']) => void const stateContext = React.createContext( persisted.defaults.requireAltTextEnabled, ) stateContext.displayName = 'AltTextRequiredStateContext' const setContext = React.createContext( (_: persisted.Schema['requireAltTextEnabled']) => {}, ) setContext.displayName = 'AltTextRequiredSetContext' export function Provider({children}: React.PropsWithChildren<{}>) { const [state, setState] = React.useState( persisted.get('requireAltTextEnabled'), ) const setStateWrapped = React.useCallback( (requireAltTextEnabled: persisted.Schema['requireAltTextEnabled']) => { setState(requireAltTextEnabled) persisted.write('requireAltTextEnabled', requireAltTextEnabled) }, [setState], ) React.useEffect(() => { return persisted.onUpdate( 'requireAltTextEnabled', nextRequireAltTextEnabled => { setState(nextRequireAltTextEnabled) }, ) }, [setStateWrapped]) return ( {children} ) } export function useRequireAltTextEnabled() { return React.useContext(stateContext) } export function useSetRequireAltTextEnabled() { return React.useContext(setContext) }