Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

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

at feat/tealfm 52 lines 1.5 kB view raw
1import React from 'react' 2 3import * as persisted from '#/state/persisted' 4 5// Preference: disableFollowersMetrics – when true, disables followers metrics on profiles 6 7type StateContext = persisted.Schema['disableFollowersMetrics'] 8// Same setter signature used across other preference modules 9type SetContext = (v: persisted.Schema['disableFollowersMetrics']) => void 10 11const stateContext = React.createContext<StateContext>( 12 persisted.defaults.disableFollowersMetrics, 13) 14const setContext = React.createContext<SetContext>( 15 (_: persisted.Schema['disableFollowersMetrics']) => {}, 16) 17 18export function Provider({children}: React.PropsWithChildren<{}>) { 19 const [state, setState] = React.useState( 20 persisted.get('disableFollowersMetrics'), 21 ) 22 23 const setStateWrapped = React.useCallback( 24 (value: persisted.Schema['disableFollowersMetrics']) => { 25 setState(value) 26 persisted.write('disableFollowersMetrics', value) 27 }, 28 [setState], 29 ) 30 31 React.useEffect(() => { 32 return persisted.onUpdate('disableFollowersMetrics', next => { 33 setState(next) 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 useDisableFollowersMetrics() { 47 return React.useContext(stateContext) 48} 49 50export function useSetDisableFollowersMetrics() { 51 return React.useContext(setContext) 52}