Bluesky app fork with some witchin' additions 馃挮
0
fork

Configure Feed

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

at main 44 lines 1.1 kB view raw
1import {createContext, useCallback, useContext, useState} from 'react' 2 3type DateDividerToggleContextType = { 4 isDividerToggled: (id: string) => boolean 5 toggleDivider: (id: string) => void 6} 7 8const DateDividerToggleContext = createContext<DateDividerToggleContextType>({ 9 isDividerToggled: () => false, 10 toggleDivider: () => {}, 11}) 12 13export function DateDividerToggleProvider({ 14 children, 15}: { 16 children: React.ReactNode 17}) { 18 const [toggledIds, setToggledIds] = useState(new Set<string>()) 19 20 const toggleDivider = useCallback((id: string) => { 21 setToggledIds(prev => { 22 const next = new Set(prev) 23 if (next.has(id)) next.delete(id) 24 else next.add(id) 25 return next 26 }) 27 }, []) 28 29 const isDividerToggled = useCallback( 30 (id: string) => toggledIds.has(id), 31 [toggledIds], 32 ) 33 34 return ( 35 <DateDividerToggleContext.Provider 36 value={{isDividerToggled, toggleDivider}}> 37 {children} 38 </DateDividerToggleContext.Provider> 39 ) 40} 41 42export function useDateDividerToggle() { 43 return useContext(DateDividerToggleContext) 44}