From a03aab14cbb7a0b054d9926f1f5967d1cfc2a36f Mon Sep 17 00:00:00 2001
From: trevor-signal <131492920+trevor-signal@users.noreply.github.com>
Date: Fri, 15 Dec 2023 13:04:08 -0500
Subject: [PATCH] Grab most recent attributes when saving messages in batchers

---
 ts/util/messageBatcher.ts | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/ts/util/messageBatcher.ts b/ts/util/messageBatcher.ts
index 52dd90ce2e2..9d2e1cf7426 100644
--- a/ts/util/messageBatcher.ts
+++ b/ts/util/messageBatcher.ts
@@ -12,7 +12,13 @@ const updateMessageBatcher = createBatcher<MessageAttributesType>({
   maxSize: 50,
   processBatch: async (messageAttrs: Array<MessageAttributesType>) => {
     log.info('updateMessageBatcher', messageAttrs.length);
-    await window.Signal.Data.saveMessages(messageAttrs, {
+
+    // Grab the latest from the cache in case they've changed
+    const messagesToSave = messageAttrs.map(
+      message => window.MessageCache.accessAttributes(message.id) ?? message
+    );
+
+    await window.Signal.Data.saveMessages(messagesToSave, {
       ourAci: window.textsecure.storage.user.getCheckedAci(),
     });
   },
@@ -40,7 +46,13 @@ export const saveNewMessageBatcher = createWaitBatcher<MessageAttributesType>({
   maxSize: 30,
   processBatch: async (messageAttrs: Array<MessageAttributesType>) => {
     log.info('saveNewMessageBatcher', messageAttrs.length);
-    await window.Signal.Data.saveMessages(messageAttrs, {
+
+    // Grab the latest from the cache in case they've changed
+    const messagesToSave = messageAttrs.map(
+      message => window.MessageCache.accessAttributes(message.id) ?? message
+    );
+
+    await window.Signal.Data.saveMessages(messagesToSave, {
       forceSave: true,
       ourAci: window.textsecure.storage.user.getCheckedAci(),
     });