about summary refs log tree commit diff
path: root/src/state/messages
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/messages')
-rw-r--r--src/state/messages/convo/agent.ts23
-rw-r--r--src/state/messages/convo/types.ts12
2 files changed, 31 insertions, 4 deletions
diff --git a/src/state/messages/convo/agent.ts b/src/state/messages/convo/agent.ts
index de2605b5a..53d77046a 100644
--- a/src/state/messages/convo/agent.ts
+++ b/src/state/messages/convo/agent.ts
@@ -972,6 +972,7 @@ export class Convo {
           key: m.id,
           message: m,
           nextMessage: null,
+          prevMessage: null,
         })
       } else if (ChatBskyConvoDefs.isDeletedMessageView(m)) {
         items.unshift({
@@ -979,6 +980,7 @@ export class Convo {
           key: m.id,
           message: m,
           nextMessage: null,
+          prevMessage: null,
         })
       }
     })
@@ -1001,6 +1003,7 @@ export class Convo {
           key: m.id,
           message: m,
           nextMessage: null,
+          prevMessage: null,
         })
       } else if (ChatBskyConvoDefs.isDeletedMessageView(m)) {
         items.push({
@@ -1008,6 +1011,7 @@ export class Convo {
           key: m.id,
           message: m,
           nextMessage: null,
+          prevMessage: null,
         })
       }
     })
@@ -1030,6 +1034,7 @@ export class Convo {
           sender: this.sender!,
         },
         nextMessage: null,
+        prevMessage: null,
         failed: this.pendingMessageFailure !== null,
         retry:
           this.pendingMessageFailure === 'recoverable'
@@ -1060,29 +1065,39 @@ export class Convo {
       })
       .map((item, i, arr) => {
         let nextMessage = null
+        let prevMessage = null
         const isMessage = isConvoItemMessage(item)
 
         if (isMessage) {
           if (
-            isMessage &&
-            (ChatBskyConvoDefs.isMessageView(item.message) ||
-              ChatBskyConvoDefs.isDeletedMessageView(item.message))
+            ChatBskyConvoDefs.isMessageView(item.message) ||
+            ChatBskyConvoDefs.isDeletedMessageView(item.message)
           ) {
             const next = arr[i + 1]
 
             if (
               isConvoItemMessage(next) &&
-              next &&
               (ChatBskyConvoDefs.isMessageView(next.message) ||
                 ChatBskyConvoDefs.isDeletedMessageView(next.message))
             ) {
               nextMessage = next.message
             }
+
+            const prev = arr[i - 1]
+
+            if (
+              isConvoItemMessage(prev) &&
+              (ChatBskyConvoDefs.isMessageView(prev.message) ||
+                ChatBskyConvoDefs.isDeletedMessageView(prev.message))
+            ) {
+              prevMessage = prev.message
+            }
           }
 
           return {
             ...item,
             nextMessage,
+            prevMessage,
           }
         }
 
diff --git a/src/state/messages/convo/types.ts b/src/state/messages/convo/types.ts
index 53e205e21..21772262e 100644
--- a/src/state/messages/convo/types.ts
+++ b/src/state/messages/convo/types.ts
@@ -87,6 +87,10 @@ export type ConvoItem =
         | ChatBskyConvoDefs.MessageView
         | ChatBskyConvoDefs.DeletedMessageView
         | null
+      prevMessage:
+        | ChatBskyConvoDefs.MessageView
+        | ChatBskyConvoDefs.DeletedMessageView
+        | null
     }
   | {
       type: 'pending-message'
@@ -96,6 +100,10 @@ export type ConvoItem =
         | ChatBskyConvoDefs.MessageView
         | ChatBskyConvoDefs.DeletedMessageView
         | null
+      prevMessage:
+        | ChatBskyConvoDefs.MessageView
+        | ChatBskyConvoDefs.DeletedMessageView
+        | null
       failed: boolean
       /**
        * Retry sending the message. If present, the message is in a failed state.
@@ -110,6 +118,10 @@ export type ConvoItem =
         | ChatBskyConvoDefs.MessageView
         | ChatBskyConvoDefs.DeletedMessageView
         | null
+      prevMessage:
+        | ChatBskyConvoDefs.MessageView
+        | ChatBskyConvoDefs.DeletedMessageView
+        | null
     }
   | {
       type: 'error'