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