Files
bsky-social-app/src/view/shell/Composer.tsx
T
2024-05-07 15:39:57 +01:00

49 lines
1.4 KiB
TypeScript

import React from 'react'
import {Modal} from 'react-native'
import {StatusBar} from 'expo-status-bar'
import {observer} from 'mobx-react-lite'
import {isIOS} from '#/platform/detection'
import {Provider as LegacyModalProvider} from '#/state/modals'
import {useComposerState} from 'state/shell/composer'
import {ModalsContainer as LegacyModalsContainer} from '#/view/com/modals/Modal'
import {
Outlet as PortalOutlet,
Provider as PortalProvider,
} from '#/components/Portal'
import {ComposePost, useComposerCancelRef} from '../com/composer/Composer'
export const Composer = observer(function ComposerImpl({}: {
winHeight: number
}) {
const state = useComposerState()
const ref = useComposerCancelRef()
return (
<Modal
aria-modal
accessibilityViewIsModal
visible={!!state}
presentationStyle="formSheet"
animationType="slide"
onRequestClose={() => ref.current?.onPressCancel()}>
<LegacyModalProvider>
<PortalProvider>
<ComposePost
cancelRef={ref}
replyTo={state?.replyTo}
onPost={state?.onPost}
quote={state?.quote}
mention={state?.mention}
text={state?.text}
imageUris={state?.imageUris}
/>
<LegacyModalsContainer />
<PortalOutlet />
</PortalProvider>
</LegacyModalProvider>
{isIOS && <StatusBar style="light" />}
</Modal>
)
})