From a84b2f9f2f64b1d434c5adbb12af6f7d76ba42ea Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Thu, 16 Nov 2023 08:18:59 -0800 Subject: Close active elems (react-query refactor) (#1926) * Refactor closeAny and closeAllActiveElements * Add close lightbox * Switch to hooks * Fixes --- src/state/util.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/state/util.ts (limited to 'src/state/util.ts') diff --git a/src/state/util.ts b/src/state/util.ts new file mode 100644 index 000000000..57f4331b0 --- /dev/null +++ b/src/state/util.ts @@ -0,0 +1,45 @@ +import {useCallback} from 'react' +import {useLightboxControls} from './lightbox' +import {useModalControls} from './modals' +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 {closeModal} = useModalControls() + const {closeComposer} = useComposerControls() + const setDrawerOpen = useSetDrawerOpen() + return useCallback(() => { + if (closeLightbox()) { + return true + } + if (closeModal()) { + return true + } + if (closeComposer()) { + return true + } + setDrawerOpen(false) + return false + }, [closeLightbox, closeModal, closeComposer, setDrawerOpen]) +} + +/** + * used to clear out any modals, eg for a navigation + */ +export function useCloseAllActiveElements() { + const {closeLightbox} = useLightboxControls() + const {closeAllModals} = useModalControls() + const {closeComposer} = useComposerControls() + const setDrawerOpen = useSetDrawerOpen() + return useCallback(() => { + closeLightbox() + closeAllModals() + closeComposer() + setDrawerOpen(false) + }, [closeLightbox, closeAllModals, closeComposer, setDrawerOpen]) +} -- cgit 1.4.1