bc39b553f9
* Add a composer prompt on home * Added image upload button * Feed composer buttons * Feed composer styles * Add client events, auto-open gallery when button is pressed * Add feature gate * Move gate check to last * Small style cleanups --------- Co-authored-by: Eric Bailey <git@esb.lol>
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import React from 'react'
|
|
import {Modal, View} from 'react-native'
|
|
|
|
import {useDialogStateControlContext} from '#/state/dialogs'
|
|
import {useComposerState} from '#/state/shell/composer'
|
|
import {ComposePost, useComposerCancelRef} from '#/view/com/composer/Composer'
|
|
import {atoms as a, useTheme} from '#/alf'
|
|
import {SheetCompatProvider as TooltipSheetCompatProvider} from '#/components/Tooltip'
|
|
|
|
export function Composer({}: {winHeight: number}) {
|
|
const {setFullyExpandedCount} = useDialogStateControlContext()
|
|
const t = useTheme()
|
|
const state = useComposerState()
|
|
const ref = useComposerCancelRef()
|
|
|
|
const open = !!state
|
|
const prevOpen = React.useRef(open)
|
|
|
|
React.useEffect(() => {
|
|
if (open && !prevOpen.current) {
|
|
setFullyExpandedCount(c => c + 1)
|
|
} else if (!open && prevOpen.current) {
|
|
setFullyExpandedCount(c => c - 1)
|
|
}
|
|
prevOpen.current = open
|
|
}, [open, setFullyExpandedCount])
|
|
|
|
return (
|
|
<Modal
|
|
aria-modal
|
|
accessibilityViewIsModal
|
|
visible={open}
|
|
presentationStyle="pageSheet"
|
|
animationType="slide"
|
|
onRequestClose={() => ref.current?.onPressCancel()}>
|
|
<View style={[t.atoms.bg, a.flex_1]}>
|
|
<TooltipSheetCompatProvider>
|
|
<ComposePost
|
|
cancelRef={ref}
|
|
replyTo={state?.replyTo}
|
|
onPost={state?.onPost}
|
|
onPostSuccess={state?.onPostSuccess}
|
|
quote={state?.quote}
|
|
mention={state?.mention}
|
|
text={state?.text}
|
|
imageUris={state?.imageUris}
|
|
videoUri={state?.videoUri}
|
|
openGallery={state?.openGallery}
|
|
/>
|
|
</TooltipSheetCompatProvider>
|
|
</View>
|
|
</Modal>
|
|
)
|
|
}
|