Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

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

at a876aae44ea07494ebea9727350aa060b81f317b 60 lines 1.6 kB view raw
1import { 2 createContext, 3 type PropsWithChildren, 4 useCallback, 5 useContext, 6 useEffect, 7 useState, 8} from 'react' 9 10import * as persisted from '#/state/persisted' 11 12// Preference: discoverContextEnabled – when true, shows debug context for discover feed 13 14type StateContext = persisted.Schema['discoverContextEnabled'] 15// Same setter signature used across other preference modules 16type SetContext = (v: persisted.Schema['discoverContextEnabled']) => void 17 18const stateContext = createContext<StateContext>( 19 persisted.defaults.discoverContextEnabled, 20) 21const setContext = createContext<SetContext>( 22 (_: persisted.Schema['discoverContextEnabled']) => {}, 23) 24 25export function Provider({children}: PropsWithChildren<{}>) { 26 const [state, setState] = useState(persisted.get('discoverContextEnabled')) 27 28 const setStateWrapped = useCallback( 29 (discoverContextEnabled: persisted.Schema['discoverContextEnabled']) => { 30 setState(discoverContextEnabled) 31 persisted.write('discoverContextEnabled', discoverContextEnabled) 32 }, 33 [setState], 34 ) 35 36 useEffect(() => { 37 return persisted.onUpdate( 38 'discoverContextEnabled', 39 nextDiscoverContextEnabled => { 40 setState(nextDiscoverContextEnabled) 41 }, 42 ) 43 }, [setStateWrapped]) 44 45 return ( 46 <stateContext.Provider value={state}> 47 <setContext.Provider value={setStateWrapped}> 48 {children} 49 </setContext.Provider> 50 </stateContext.Provider> 51 ) 52} 53 54export function useDiscoverContextEnabled() { 55 return useContext(stateContext) 56} 57 58export function useSetDiscoverContextEnabled() { 59 return useContext(setContext) 60}