From c3a4a0bb3157bfde2164a2e0498d4c96ce7bcd92 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Tue, 28 Nov 2023 16:37:34 -0800 Subject: [PATCH] sendSyncMessage: Check timestamp, don't check sent status --- ts/models/messages.ts | 19 +++++++++++-------- ts/util/editHelpers.ts | 17 ----------------- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/ts/models/messages.ts b/ts/models/messages.ts index 3470d28c8c..742e3f1c66 100644 --- a/ts/models/messages.ts +++ b/ts/models/messages.ts @@ -155,11 +155,8 @@ import { getSenderIdentifier } from '../util/getSenderIdentifier'; import { getNotificationDataForMessage } from '../util/getNotificationDataForMessage'; import { getNotificationTextForMessage } from '../util/getNotificationTextForMessage'; import { getMessageAuthorText } from '../util/getMessageAuthorText'; -import { - getPropForTimestamp, - setPropForTimestamp, - hasEditBeenSent, -} from '../util/editHelpers'; +import { getPropForTimestamp, setPropForTimestamp } from '../util/editHelpers'; +import { getMessageSentTimestamp } from '../util/getMessageSentTimestamp'; /* eslint-disable more/no-then */ @@ -1228,8 +1225,14 @@ export class MessageModel extends window.Backbone.Model { if (!dataMessage) { return; } - const wasEditSent = hasEditBeenSent(this); - const isUpdate = Boolean(this.get('synced')) && !wasEditSent; + + const originalTimestamp = getMessageSentTimestamp(this.attributes, { + includeEdits: false, + log, + }); + const isSendingEdit = targetTimestamp !== originalTimestamp; + + const isUpdate = Boolean(this.get('synced')) && !isSendingEdit; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const conv = this.getConversation()!; @@ -1261,7 +1264,7 @@ export class MessageModel extends window.Backbone.Model { map(conversationsWithSealedSender, c => c.id) ); - const encodedContent = wasEditSent + const encodedContent = isSendingEdit ? { encodedEditMessage: dataMessage, } diff --git a/ts/util/editHelpers.ts b/ts/util/editHelpers.ts index 9d11bf63df..5306d4ee06 100644 --- a/ts/util/editHelpers.ts +++ b/ts/util/editHelpers.ts @@ -4,28 +4,11 @@ import { isNumber, sortBy } from 'lodash'; import { strictAssert } from './assert'; -import { isSent } from '../messages/MessageSendState'; import type { EditHistoryType } from '../model-types'; import type { MessageModel } from '../models/messages'; import type { LoggerType } from '../types/Logging'; -export function hasEditBeenSent(message: MessageModel): boolean { - const originalTimestamp = message.get('timestamp'); - const editHistory = message.get('editHistory') || []; - - return Boolean( - editHistory.find(item => { - if (item.timestamp === originalTimestamp) { - return false; - } - return Object.values(item.sendStateByConversationId || {}).some( - sendState => isSent(sendState.status) - ); - }) - ); -} - // The tricky bit for this function is if we are on our second+ attempt to send a given // edit, we're still sending that edit. export function getTargetOfThisEditTimestamp({