From e9dfa0704f4bc9dd7658cd7cf2a7395607ecb7d1 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Fri, 17 Sep 2021 02:38:27 +0200 Subject: [PATCH] do not overwrite sent_at with network time for synced messages (#1921) * do not update sent_at for synced messages * reply to message context menu only visible if msg sent --- .../conversation/message/MessageContextMenu.tsx | 3 ++- ts/session/sending/MessageSender.ts | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ts/components/conversation/message/MessageContextMenu.tsx b/ts/components/conversation/message/MessageContextMenu.tsx index 9e97f1b35..59144e1ba 100644 --- a/ts/components/conversation/message/MessageContextMenu.tsx +++ b/ts/components/conversation/message/MessageContextMenu.tsx @@ -64,6 +64,7 @@ export const MessageContextMenu = (props: Props) => { } = selected; const { messageId, contextMenuId } = props; const showRetry = status === 'error' && direction === 'outgoing'; + const isSent = status === 'sent'; const multipleAttachments = attachments && attachments.length > 1; const onContextMenuShown = useCallback(() => { @@ -168,7 +169,7 @@ export const MessageContextMenu = (props: Props) => { ) : null} {window.i18n('copyMessage')} - {window.i18n('replyToMessage')} + {isSent && {window.i18n('replyToMessage')}} {window.i18n('moreInformation')} {showRetry ? {window.i18n('resend')} : null} {isDeletable ? ( diff --git a/ts/session/sending/MessageSender.ts b/ts/session/sending/MessageSender.ts index 85cba5f55..13fcedb0a 100644 --- a/ts/session/sending/MessageSender.ts +++ b/ts/session/sending/MessageSender.ts @@ -31,6 +31,13 @@ function overwriteOutgoingTimestampWithNetworkTimestamp(message: RawMessage) { const contentDecoded = SignalService.Content.decode(plainTextBuffer); const { dataMessage, dataExtractionNotification, typingMessage } = contentDecoded; if (dataMessage && dataMessage.timestamp && dataMessage.timestamp > 0) { + // this is a sync message, do not overwrite the message timestamp + if (dataMessage.syncTarget) { + return { + overRiddenTimestampBuffer: plainTextBuffer, + diffTimestamp: _.toNumber(dataMessage.timestamp), + }; + } dataMessage.timestamp = diffTimestamp; } if ( @@ -86,7 +93,8 @@ export async function send( // and the isDuplicate messages relies on sent_at timestamp to be valid. const found = await Data.getMessageById(message.identifier); - if (found) { + // make sure to not update the send timestamp if this a currently syncing message + if (found && !found.get('sentSync')) { found.set({ sent_at: diffTimestamp }); await found.commit(); }