Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

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

at readme-update 50 lines 1.4 kB view raw
1import React from 'react' 2 3import * as persisted from '#/state/persisted' 4 5// Preference: hideFeedsPromoTab – when true, suppress the "Feeds ✨" promotional tab in HomeHeader. 6 7type StateContext = persisted.Schema['hideFeedsPromoTab'] 8// Same setter signature used across other preference modules 9type SetContext = (v: persisted.Schema['hideFeedsPromoTab']) => void 10 11const stateContext = React.createContext<StateContext>( 12 persisted.defaults.hideFeedsPromoTab, 13) 14const setContext = React.createContext<SetContext>( 15 (_: persisted.Schema['hideFeedsPromoTab']) => {}, 16) 17 18export function Provider({children}: React.PropsWithChildren<{}>) { 19 const [state, setState] = React.useState(persisted.get('hideFeedsPromoTab')) 20 21 const setStateWrapped = React.useCallback( 22 (value: persisted.Schema['hideFeedsPromoTab']) => { 23 setState(value) 24 persisted.write('hideFeedsPromoTab', value) 25 }, 26 [setState], 27 ) 28 29 React.useEffect(() => { 30 return persisted.onUpdate('hideFeedsPromoTab', next => { 31 setState(next) 32 }) 33 }, [setStateWrapped]) 34 35 return ( 36 <stateContext.Provider value={state}> 37 <setContext.Provider value={setStateWrapped}> 38 {children} 39 </setContext.Provider> 40 </stateContext.Provider> 41 ) 42} 43 44export function useHideFeedsPromoTab() { 45 return React.useContext(stateContext) 46} 47 48export function useSetHideFeedsPromoTab() { 49 return React.useContext(setContext) 50}