From f53e9568100d847dba87c2200d05d75fff8ab38e Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Tue, 16 Jul 2024 19:16:57 -0700 Subject: [PATCH] Edit message: Don't allow send unless message contents changed --- stylesheets/components/CompositionArea.scss | 3 +++ ts/components/CompositionArea.tsx | 14 ++++++++++- ts/components/CompositionInput.tsx | 27 ++++++++++++++++++--- ts/state/ducks/conversations.ts | 8 +++--- ts/types/BodyRange.ts | 26 +++++++++++++++++++- 5 files changed, 70 insertions(+), 8 deletions(-) diff --git a/stylesheets/components/CompositionArea.scss b/stylesheets/components/CompositionArea.scss index 9db638ea1..5e695a5cc 100644 --- a/stylesheets/components/CompositionArea.scss +++ b/stylesheets/components/CompositionArea.scss @@ -82,6 +82,9 @@ &::before { @include color-svg('../images/icons/v3/check/check.svg', $color-white); } + &:disabled { + opacity: 0.5; + } } } diff --git a/ts/components/CompositionArea.tsx b/ts/components/CompositionArea.tsx index c4a464dce..3dc65a247 100644 --- a/ts/components/CompositionArea.tsx +++ b/ts/components/CompositionArea.tsx @@ -359,7 +359,15 @@ export const CompositionArea = memo(function CompositionArea({ const editedMessageId = draftEditMessage?.targetMessageId; const handleSubmit = useCallback( - (message: string, bodyRanges: DraftBodyRanges, timestamp: number) => { + ( + message: string, + bodyRanges: DraftBodyRanges, + timestamp: number + ): boolean => { + if (!dirty) { + return false; + } + emojiButtonRef.current?.close(); if (editedMessageId) { @@ -380,9 +388,12 @@ export const CompositionArea = memo(function CompositionArea({ }); } setLarge(false); + + return true; }, [ conversationId, + dirty, draftAttachments, editedMessageId, quotedMessageSentAt, @@ -592,6 +603,7 @@ export const CompositionArea = memo(function CompositionArea({