deer social fork for personal usage. but you might see a use idk. github mirror
at main 1.6 kB view raw
1import {useCallback} from 'react' 2 3import {useDialogStateControlContext} from '#/state/dialogs' 4import {useLightboxControls} from './lightbox' 5import {useModalControls} from './modals' 6import {useComposerControls} from './shell/composer' 7import {useSetDrawerOpen} from './shell/drawer-open' 8 9/** 10 * returns true if something was closed 11 * (used by the android hardware back btn) 12 */ 13export function useCloseAnyActiveElement() { 14 const {closeLightbox} = useLightboxControls() 15 const {closeModal} = useModalControls() 16 const {closeComposer} = useComposerControls() 17 const {closeAllDialogs} = useDialogStateControlContext() 18 const setDrawerOpen = useSetDrawerOpen() 19 return useCallback(() => { 20 if (closeLightbox()) { 21 return true 22 } 23 if (closeModal()) { 24 return true 25 } 26 if (closeAllDialogs()) { 27 return true 28 } 29 if (closeComposer()) { 30 return true 31 } 32 setDrawerOpen(false) 33 return false 34 }, [closeLightbox, closeModal, closeComposer, setDrawerOpen, closeAllDialogs]) 35} 36 37/** 38 * used to clear out any modals, eg for a navigation 39 */ 40export function useCloseAllActiveElements() { 41 const {closeLightbox} = useLightboxControls() 42 const {closeAllModals} = useModalControls() 43 const {closeComposer} = useComposerControls() 44 const {closeAllDialogs: closeAlfDialogs} = useDialogStateControlContext() 45 const setDrawerOpen = useSetDrawerOpen() 46 return useCallback(() => { 47 closeLightbox() 48 closeAllModals() 49 closeComposer() 50 closeAlfDialogs() 51 setDrawerOpen(false) 52 }, [ 53 closeLightbox, 54 closeAllModals, 55 closeComposer, 56 closeAlfDialogs, 57 setDrawerOpen, 58 ]) 59}