about summary refs log tree commit diff
path: root/src/screens/Messages/components/ChatListItem.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/screens/Messages/components/ChatListItem.tsx')
-rw-r--r--src/screens/Messages/components/ChatListItem.tsx76
1 files changed, 44 insertions, 32 deletions
diff --git a/src/screens/Messages/components/ChatListItem.tsx b/src/screens/Messages/components/ChatListItem.tsx
index d8e4b975c..8a760e2c9 100644
--- a/src/screens/Messages/components/ChatListItem.tsx
+++ b/src/screens/Messages/components/ChatListItem.tsx
@@ -185,50 +185,61 @@ function ChatListItemReady({
         lastMessageSentAt = convo.lastMessage.sentAt
       }
       if (ChatBskyConvoDefs.isDeletedMessageView(convo.lastMessage)) {
+        lastMessageSentAt = convo.lastMessage.sentAt
+
         lastMessage = isDeletedAccount
           ? _(msg`Conversation deleted`)
           : _(msg`Message deleted`)
       }
-      if (ChatBskyConvoDefs.isMessageAndReactionView(convo.lastMessage)) {
-        const isFromMe =
-          convo.lastMessage.reaction.sender.did === currentAccount?.did
-        const lastMessageText = convo.lastMessage.message.text
-        const fallbackMessage = _(
-          msg({
-            message: 'a message',
-            comment: `If last message does not contain text, fall back to "{user} reacted to {a message}"`,
-          }),
-        )
-
-        if (isFromMe) {
-          lastMessage = _(
-            msg`You reacted ${convo.lastMessage.reaction.value} to ${
-              lastMessageText
-                ? `"${convo.lastMessage.message.text}"`
-                : fallbackMessage
-            }`,
+
+      if (ChatBskyConvoDefs.isMessageAndReactionView(convo.lastReaction)) {
+        if (
+          !lastMessageSentAt ||
+          new Date(lastMessageSentAt) <
+            new Date(convo.lastReaction.reaction.createdAt)
+        ) {
+          const isFromMe =
+            convo.lastReaction.reaction.sender.did === currentAccount?.did
+          const lastMessageText = convo.lastReaction.message.text
+          const fallbackMessage = _(
+            msg({
+              message: 'a message',
+              comment: `If last message does not contain text, fall back to "{user} reacted to {a message}"`,
+            }),
           )
-        } else {
-          const senderDid = convo.lastMessage.reaction.sender.did
-          const sender = convo.members.find(member => member.did === senderDid)
-          if (sender) {
+
+          if (isFromMe) {
             lastMessage = _(
-              msg`${sanitizeDisplayName(
-                sender.displayName || sender.handle,
-              )} reacted ${convo.lastMessage.reaction.value} to ${
+              msg`You reacted ${convo.lastReaction.reaction.value} to ${
                 lastMessageText
-                  ? `"${convo.lastMessage.message.text}"`
+                  ? `"${convo.lastReaction.message.text}"`
                   : fallbackMessage
               }`,
             )
           } else {
-            lastMessage = _(
-              msg`Someone reacted ${convo.lastMessage.reaction.value} to ${
-                lastMessageText
-                  ? `"${convo.lastMessage.message.text}"`
-                  : fallbackMessage
-              }`,
+            const senderDid = convo.lastReaction.reaction.sender.did
+            const sender = convo.members.find(
+              member => member.did === senderDid,
             )
+            if (sender) {
+              lastMessage = _(
+                msg`${sanitizeDisplayName(
+                  sender.displayName || sender.handle,
+                )} reacted ${convo.lastReaction.reaction.value} to ${
+                  lastMessageText
+                    ? `"${convo.lastReaction.message.text}"`
+                    : fallbackMessage
+                }`,
+              )
+            } else {
+              lastMessage = _(
+                msg`Someone reacted ${convo.lastReaction.reaction.value} to ${
+                  lastMessageText
+                    ? `"${convo.lastReaction.message.text}"`
+                    : fallbackMessage
+                }`,
+              )
+            }
           }
         }
       }
@@ -241,6 +252,7 @@ function ChatListItemReady({
     }, [
       _,
       convo.lastMessage,
+      convo.lastReaction,
       currentAccount?.did,
       isDeletedAccount,
       convo.members,