diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-11-16 08:18:59 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-16 08:18:59 -0800 |
commit | a84b2f9f2f64b1d434c5adbb12af6f7d76ba42ea (patch) | |
tree | e430b8032350caa18b8cdd3140a4d94c96dfd6ce /src/state/util.ts | |
parent | 0de8d40981fecdeaec92307bafe121ccb2091b45 (diff) | |
download | voidsky-a84b2f9f2f64b1d434c5adbb12af6f7d76ba42ea.tar.zst |
Close active elems (react-query refactor) (#1926)
* Refactor closeAny and closeAllActiveElements * Add close lightbox * Switch to hooks * Fixes
Diffstat (limited to 'src/state/util.ts')
-rw-r--r-- | src/state/util.ts | 45 |
1 files changed, 45 insertions, 0 deletions
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]) +} |