diff --git a/js/views/conversation_view.js b/js/views/conversation_view.js index 69e85c088..0cea8c8fe 100644 --- a/js/views/conversation_view.js +++ b/js/views/conversation_view.js @@ -458,6 +458,8 @@ this.onEditorStateChange(msg, caretLocation), onTextTooLong: () => this.showToast(Whisper.MessageBodyTooLongToast), onChooseAttachment: this.onChooseAttachment.bind(this), + getQuotedMessage: () => this.model.get('quotedMessageId'), + clearQuotedMessage: () => this.setQuoteMessage(null), micCellEl, attachmentListEl, }; @@ -2582,8 +2584,7 @@ this.quotedMessage = message; if (message) { - const quote = await this.model.makeQuote(this.quotedMessage); - this.quote = quote; + this.quote = await this.model.makeQuote(this.quotedMessage); this.focusMessageFieldAndClearDisabled(); } diff --git a/ts/components/CompositionArea.tsx b/ts/components/CompositionArea.tsx index 6e9835e13..9bc70455e 100644 --- a/ts/components/CompositionArea.tsx +++ b/ts/components/CompositionArea.tsx @@ -43,7 +43,7 @@ export type Props = Pick< | 'onEditorSizeChange' | 'onEditorStateChange' | 'onTextTooLong' - | 'startingText' + | 'startingText' | 'clearQuotedMessage' | 'getQuotedMessage' > & Pick< EmojiButtonProps, @@ -102,6 +102,8 @@ export const CompositionArea = ({ clearShowIntroduction, showPickerHint, clearShowPickerHint, + clearQuotedMessage, + getQuotedMessage, }: Props) => { const [disabled, setDisabled] = React.useState(false); const [showMic, setShowMic] = React.useState(!startingText); @@ -339,6 +341,8 @@ export const CompositionArea = ({ onDirtyChange={setDirty} skinTone={skinTone} startingText={startingText} + clearQuotedMessage={clearQuotedMessage} + getQuotedMessage={getQuotedMessage} /> {!large ? ( diff --git a/ts/components/CompositionInput.tsx b/ts/components/CompositionInput.tsx index d075f6844..aa123dfda 100644 --- a/ts/components/CompositionInput.tsx +++ b/ts/components/CompositionInput.tsx @@ -42,6 +42,8 @@ export type Props = { onTextTooLong(): unknown; onPickEmoji(o: EmojiPickDataType): unknown; onSubmit(message: string): unknown; + getQuotedMessage(): unknown; + clearQuotedMessage(): unknown; }; export type InputApi = { @@ -217,6 +219,8 @@ export const CompositionInput = ({ onSubmit, skinTone, startingText, + getQuotedMessage, + clearQuotedMessage, }: Props) => { const [editorRenderState, setEditorRenderState] = React.useState( getInitialEditorState(startingText) @@ -462,6 +466,8 @@ export const CompositionInput = ({ if (emojiResults.length > 0) { e.preventDefault(); resetEmojiResults(); + } else if (getQuotedMessage()) { + clearQuotedMessage(); } }, [resetEmojiResults, emojiResults]