import React from 'react' import * as persisted from '#/state/persisted' type StateContext = boolean type SetContext = (v: boolean) => void const stateContext = React.createContext( Boolean(persisted.defaults.disableHaptics), ) stateContext.displayName = 'DisableHapticsStateContext' const setContext = React.createContext((_: boolean) => {}) setContext.displayName = 'DisableHapticsSetContext' export function Provider({children}: {children: React.ReactNode}) { const [state, setState] = React.useState( Boolean(persisted.get('disableHaptics')), ) const setStateWrapped = React.useCallback( (hapticsEnabled: persisted.Schema['disableHaptics']) => { setState(Boolean(hapticsEnabled)) persisted.write('disableHaptics', hapticsEnabled) }, [setState], ) React.useEffect(() => { return persisted.onUpdate('disableHaptics', nextDisableHaptics => { setState(Boolean(nextDisableHaptics)) }) }, [setStateWrapped]) return ( {children} ) } export const useHapticsDisabled = () => React.useContext(stateContext) export const useSetHapticsDisabled = () => React.useContext(setContext)