Something went wrong. Try again.
Bluesky app fork with some witchin' additions 💫 forked from jollywhoppers.com/witchsky.app
Something went wrong. Try again.
1.5 kB · 48 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import {useCallback} from 'react'
import {useDialogStateControlContext} from '#/state/dialogs'import {useLightboxControls} from '#/components/Lightbox/state'import {IS_WEB} from '#/env'import {useComposerControls} from './shell/composer'import {useSetDrawerOpen} from './shell/drawer-open'
/** * returns true if something was closed * (used by the android hardware back btn) */export function useCloseAnyActiveElement() { const {closeLightbox} = useLightboxControls() const {closeComposer} = useComposerControls() const {closeAllDialogs} = useDialogStateControlContext() const setDrawerOpen = useSetDrawerOpen() return useCallback(() => { if (closeLightbox()) { return true } if (closeAllDialogs()) { return true } if (closeComposer()) { return true } setDrawerOpen(false) return false }, [closeLightbox, closeComposer, setDrawerOpen, closeAllDialogs])}
/** * used to clear out any modals, eg for a navigation */export function useCloseAllActiveElements() { const {closeLightbox} = useLightboxControls() const {closeComposer} = useComposerControls() const {closeAllDialogs: closeAlfDialogs} = useDialogStateControlContext() const setDrawerOpen = useSetDrawerOpen() return useCallback(() => { closeLightbox() // Web navigation can continue underneath the open composer. if (!IS_WEB) closeComposer() closeAlfDialogs() setDrawerOpen(false) }, [closeLightbox, closeComposer, closeAlfDialogs, setDrawerOpen])}