diff options
Diffstat (limited to 'src/view/com/modals/Modal.tsx')
-rw-r--r-- | src/view/com/modals/Modal.tsx | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/view/com/modals/Modal.tsx b/src/view/com/modals/Modal.tsx index 73ac14469..f3a69d2af 100644 --- a/src/view/com/modals/Modal.tsx +++ b/src/view/com/modals/Modal.tsx @@ -1,4 +1,4 @@ -import React, {useRef} from 'react' +import React, {useRef, useEffect} from 'react' import {View} from 'react-native' import {observer} from 'mobx-react-lite' import BottomSheet from '@gorhom/bottom-sheet' @@ -7,11 +7,14 @@ import {createCustomBackdrop} from '../util/BottomSheetCustomBackdrop' import * as models from '../../../state/models/shell' +import * as TabsSelectorModal from './TabsSelector' import * as LinkActionsModal from './LinkActions' import * as SharePostModal from './SharePost.native' import * as ComposePostModal from './ComposePost' import * as EditProfile from './EditProfile' +const CLOSED_SNAPPOINTS = ['10%'] + export const Modal = observer(function Modal() { const store = useStores() const bottomSheetRef = useRef<BottomSheet>(null) @@ -25,12 +28,24 @@ export const Modal = observer(function Modal() { bottomSheetRef.current?.close() } - if (!store.shell.isModalActive) { - return <View /> - } + useEffect(() => { + if (store.shell.isModalActive) { + bottomSheetRef.current?.expand() + } else { + bottomSheetRef.current?.close() + } + }, [store.shell.isModalActive, bottomSheetRef]) - let snapPoints, element - if (store.shell.activeModal?.name === 'link-actions') { + let snapPoints: (string | number)[] = CLOSED_SNAPPOINTS + let element + if (store.shell.activeModal?.name === 'tabs-selector') { + snapPoints = TabsSelectorModal.snapPoints + element = ( + <TabsSelectorModal.Component + {...(store.shell.activeModal as models.TabsSelectorModel)} + /> + ) + } else if (store.shell.activeModal?.name === 'link-actions') { snapPoints = LinkActionsModal.snapPoints element = ( <LinkActionsModal.Component @@ -59,16 +74,19 @@ export const Modal = observer(function Modal() { /> ) } else { - return <View /> + element = <View /> } return ( <BottomSheet ref={bottomSheetRef} snapPoints={snapPoints} + index={store.shell.isModalActive ? 0 : -1} enablePanDownToClose keyboardBehavior="fillParent" - backdropComponent={createCustomBackdrop(onClose)} + backdropComponent={ + store.shell.isModalActive ? createCustomBackdrop(onClose) : undefined + } onChange={onShareBottomSheetChange}> {element} </BottomSheet> |