mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
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}