import React, {useRef, useEffect} from 'react' import {View} from 'react-native' import {observer} from 'mobx-react-lite' import BottomSheet from '@gorhom/bottom-sheet' import {useStores} from 'state/index' import {createCustomBackdrop} from '../util/BottomSheetCustomBackdrop' import * as ConfirmModal from './Confirm' import * as EditProfileModal from './EditProfile' import * as ServerInputModal from './ServerInput' import * as ReportPostModal from './ReportPost' import * as RepostModal from './Repost' import * as ReportAccountModal from './ReportAccount' import * as DeleteAccountModal from './DeleteAccount' import * as ChangeHandleModal from './ChangeHandle' import {usePalette} from 'lib/hooks/usePalette' import {StyleSheet} from 'react-native' const DEFAULT_SNAPPOINTS = ['90%'] export const ModalsContainer = observer(function ModalsContainer() { const store = useStores() const bottomSheetRef = useRef(null) const pal = usePalette('default') const onBottomSheetChange = (snapPoint: number) => { if (snapPoint === -1) { store.shell.closeModal() } } const onClose = () => { bottomSheetRef.current?.close() store.shell.closeModal() } const activeModal = store.shell.activeModals[store.shell.activeModals.length - 1] useEffect(() => { if (store.shell.isModalActive) { bottomSheetRef.current?.expand() } else { bottomSheetRef.current?.close() } }, [store.shell.isModalActive, bottomSheetRef, activeModal?.name]) let snapPoints: (string | number)[] = DEFAULT_SNAPPOINTS let element if (activeModal?.name === 'confirm') { snapPoints = ConfirmModal.snapPoints element = } else if (activeModal?.name === 'edit-profile') { snapPoints = EditProfileModal.snapPoints element = } else if (activeModal?.name === 'server-input') { snapPoints = ServerInputModal.snapPoints element = } else if (activeModal?.name === 'report-post') { snapPoints = ReportPostModal.snapPoints element = } else if (activeModal?.name === 'report-account') { snapPoints = ReportAccountModal.snapPoints element = } else if (activeModal?.name === 'delete-account') { snapPoints = DeleteAccountModal.snapPoints element = } else if (activeModal?.name === 'repost') { snapPoints = RepostModal.snapPoints element = } else if (activeModal?.name === 'change-handle') { snapPoints = ChangeHandleModal.snapPoints element = } else { return } return ( {element} ) }) const styles = StyleSheet.create({ handle: { borderTopLeftRadius: 10, borderTopRightRadius: 10, }, })