diff options
author | Hailey <me@haileyok.com> | 2024-04-29 23:34:26 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-29 23:34:26 -0700 |
commit | eb8bfd11d14a87983b210bea4a619d2dd7c51cdf (patch) | |
tree | 6f322f86ba92e989570daa1ada94ad5f10258506 /src/screens/Messages/Conversation/MessageInput.tsx | |
parent | 5d19f27052ebd3642db58742f7efaaee0b3a6720 (diff) | |
download | voidsky-eb8bfd11d14a87983b210bea4a619d2dd7c51cdf.tar.zst |
[Clipclops] Add screen to view and send clip clops (#3754)
* add new routes with placeholder screens * add clops list * add a clop input * add some better padding to the clops * some more adjustments * add rnkc * implement rnkc * implement rnkc * be a little less weird about it * rename clop stuff * rename more clop * one more * [Clipclops] Temp codegenerated lexicon (#3749) * add codegenerated lexicon * replace hailey's types * use codegen'd types in components * fix error + throw if fetch failed * remove bad imports * update messageslist and messageitem * import useState * add clop service URL hook * add dm service url storage * use context * use context for service url (temp) * remove log * nits --------- Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Diffstat (limited to 'src/screens/Messages/Conversation/MessageInput.tsx')
-rw-r--r-- | src/screens/Messages/Conversation/MessageInput.tsx | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/screens/Messages/Conversation/MessageInput.tsx b/src/screens/Messages/Conversation/MessageInput.tsx new file mode 100644 index 000000000..bd73594ce --- /dev/null +++ b/src/screens/Messages/Conversation/MessageInput.tsx @@ -0,0 +1,65 @@ +import React from 'react' +import {Pressable, TextInput, View} from 'react-native' + +import {atoms as a, useTheme} from '#/alf' +import {Text} from '#/components/Typography' + +export function MessageInput({ + onSendMessage, + onFocus, + onBlur, +}: { + onSendMessage: (message: string) => void + onFocus: () => void + onBlur: () => void +}) { + const t = useTheme() + const [message, setMessage] = React.useState('') + + const inputRef = React.useRef<TextInput>(null) + + const onSubmit = React.useCallback(() => { + onSendMessage(message) + setMessage('') + setTimeout(() => { + inputRef.current?.focus() + }, 100) + }, [message, onSendMessage]) + + return ( + <View + style={[ + a.flex_row, + a.py_sm, + a.px_sm, + a.rounded_full, + a.mt_sm, + t.atoms.bg_contrast_25, + ]}> + <TextInput + accessibilityLabel="Text input field" + accessibilityHint="Write a message" + value={message} + onChangeText={setMessage} + placeholder="Write a message" + style={[a.flex_1, a.text_sm, a.px_sm]} + onSubmitEditing={onSubmit} + onFocus={onFocus} + onBlur={onBlur} + placeholderTextColor={t.palette.contrast_500} + ref={inputRef} + /> + <Pressable + accessibilityRole="button" + style={[ + a.rounded_full, + a.align_center, + a.justify_center, + {height: 30, width: 30, backgroundColor: t.palette.primary_500}, + ]} + onPress={onSubmit}> + <Text style={a.text_md}>🐴</Text> + </Pressable> + </View> + ) +} |