this repo has no description
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}