diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-05-14 18:55:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-14 18:55:43 +0100 |
commit | 9861494e341b482a522d0ecc6a2194bb12a769fb (patch) | |
tree | ea57b047639058f2b28ee9347cc2b811ff407095 /src/screens/Messages/Conversation/MessageInput.tsx | |
parent | f147256fdca45d6b460f53aacc777c7a0957e4c6 (diff) | |
download | voidsky-9861494e341b482a522d0ecc6a2194bb12a769fb.tar.zst |
[🐴] Message drafts (#3993)
* drafts * don't throw if no convo ID * Remove labs package --------- Co-authored-by: Eric Bailey <git@esb.lol>
Diffstat (limited to 'src/screens/Messages/Conversation/MessageInput.tsx')
-rw-r--r-- | src/screens/Messages/Conversation/MessageInput.tsx | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/screens/Messages/Conversation/MessageInput.tsx b/src/screens/Messages/Conversation/MessageInput.tsx index 926d66e7d..d05d6109e 100644 --- a/src/screens/Messages/Conversation/MessageInput.tsx +++ b/src/screens/Messages/Conversation/MessageInput.tsx @@ -15,6 +15,10 @@ import Graphemer from 'graphemer' import {HITSLOP_10, MAX_DM_GRAPHEME_LENGTH} from '#/lib/constants' import {useHaptics} from '#/lib/haptics' +import { + useMessageDraft, + useSaveMessageDraft, +} from '#/state/messages/message-drafts' import * as Toast from '#/view/com/util/Toast' import {atoms as a, useTheme} from '#/alf' import {PaperPlane_Stroke2_Corner0_Rounded as PaperPlane} from '#/components/icons/PaperPlane' @@ -29,7 +33,8 @@ export function MessageInput({ const {_} = useLingui() const t = useTheme() const playHaptic = useHaptics() - const [message, setMessage] = React.useState('') + const {getDraft, clearDraft} = useMessageDraft() + const [message, setMessage] = React.useState(getDraft) const [maxHeight, setMaxHeight] = React.useState<number | undefined>() const [isInputScrollable, setIsInputScrollable] = React.useState(false) @@ -45,13 +50,14 @@ export function MessageInput({ Toast.show(_(msg`Message is too long`)) return } + clearDraft() onSendMessage(message.trimEnd()) playHaptic() setMessage('') setTimeout(() => { inputRef.current?.focus() }, 100) - }, [message, onSendMessage, playHaptic, _]) + }, [message, onSendMessage, playHaptic, _, clearDraft]) const onInputLayout = React.useCallback( (e: NativeSyntheticEvent<TextInputContentSizeChangeEventData>) => { @@ -69,6 +75,8 @@ export function MessageInput({ [scrollToEnd, topInset], ) + useSaveMessageDraft(message) + return ( <View style={a.p_sm}> <View |