From 4ef3afb6040a1f52881b455b190315193af05946 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Fri, 16 Dec 2022 14:48:37 -0600 Subject: Fixes to the composer UX around images and scrolling --- src/view/com/composer/ComposePost.tsx | 111 +++++++++++++++++++++------------- 1 file changed, 69 insertions(+), 42 deletions(-) (limited to 'src/view/com/composer/ComposePost.tsx') diff --git a/src/view/com/composer/ComposePost.tsx b/src/view/com/composer/ComposePost.tsx index c6d371bc6..65120b663 100644 --- a/src/view/com/composer/ComposePost.tsx +++ b/src/view/com/composer/ComposePost.tsx @@ -4,6 +4,7 @@ import { ActivityIndicator, KeyboardAvoidingView, SafeAreaView, + ScrollView, StyleSheet, Text, TextInput, @@ -32,6 +33,7 @@ import {SelectedPhoto} from './SelectedPhoto' const MAX_TEXT_LENGTH = 256 const DANGER_TEXT_LENGTH = MAX_TEXT_LENGTH +const HITSLOP = {left: 10, top: 10, right: 10, bottom: 10} export const ComposePost = observer(function ComposePost({ replyTo, @@ -48,6 +50,7 @@ export const ComposePost = observer(function ComposePost({ const [processingState, setProcessingState] = useState('') const [error, setError] = useState('') const [text, setText] = useState('') + const [isSelectingPhotos, setIsSelectingPhotos] = useState(false) const [selectedPhotos, setSelectedPhotos] = useState([]) const autocompleteView = useMemo( @@ -81,10 +84,17 @@ export const ComposePost = observer(function ComposePost({ } }, []) + const onPressSelectPhotos = () => { + if (isSelectingPhotos) { + setIsSelectingPhotos(false) + } else if (selectedPhotos.length < 4) { + setIsSelectingPhotos(true) + } + } const onSelectPhotos = (photos: string[]) => { setSelectedPhotos(photos) + setIsSelectingPhotos(false) } - const onChangeText = (newText: string) => { setText(newText) @@ -211,55 +221,71 @@ export const ComposePost = observer(function ComposePost({ {error} )} - {replyTo ? ( - + + {replyTo ? ( + + + + + + {replyTo.text} + + + + ) : undefined} + - - - - {replyTo.text} - - + onChangeText(text)} + placeholder={selectTextInputPlaceholder} + style={styles.textInput}> + {textDecorated} + - ) : undefined} - - - onChangeText(text)} - placeholder={selectTextInputPlaceholder} - style={styles.textInput}> - {textDecorated} - - - - {localPhotos.photos != null && selectedPhotos.length < 4 && ( - - )} + + {isSelectingPhotos && + localPhotos.photos != null && + selectedPhotos.length < 4 && ( + + )} + + + {MAX_TEXT_LENGTH - text.length} @@ -392,5 +418,6 @@ const styles = StyleSheet.create({ alignItems: 'center', borderTopWidth: 1, borderTopColor: colors.gray2, + backgroundColor: colors.white, }, }) -- cgit 1.4.1