about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEric Bailey <git@esb.lol>2024-05-01 16:29:34 -0500
committerGitHub <noreply@github.com>2024-05-01 16:29:34 -0500
commit5148b957b7eb0df89d0fd6f20e68b83e16d6a400 (patch)
tree1aeb283d75107839bb08cf54df75a5ab66a07d48
parente2556d9f40520f350748ba24bd994b13a788e244 (diff)
downloadvoidsky-5148b957b7eb0df89d0fd6f20e68b83e16d6a400.tar.zst
[Clipclops] Pending messages (#3803)
* Make pending message like normal message

* Remove getter

* Make props public
-rw-r--r--src/screens/Messages/Conversation/MessagesList.tsx4
-rw-r--r--src/state/messages/convo.ts28
2 files changed, 19 insertions, 13 deletions
diff --git a/src/screens/Messages/Conversation/MessagesList.tsx b/src/screens/Messages/Conversation/MessagesList.tsx
index d3f9916ec..381f5fe4e 100644
--- a/src/screens/Messages/Conversation/MessagesList.tsx
+++ b/src/screens/Messages/Conversation/MessagesList.tsx
@@ -26,12 +26,10 @@ function MaybeLoader({isLoading}: {isLoading: boolean}) {
 }
 
 function renderItem({item}: {item: ConvoItem}) {
-  if (item.type === 'message') {
+  if (item.type === 'message' || item.type === 'pending-message') {
     return <MessageItem item={item.message} next={item.nextMessage} />
   } else if (item.type === 'deleted-message') {
     return <Text>Deleted message</Text>
-  } else if (item.type === 'pending-message') {
-    return <Text>{item.message.text}</Text>
   } else if (item.type === 'pending-retry') {
     return (
       <View>
diff --git a/src/state/messages/convo.ts b/src/state/messages/convo.ts
index 73ef8d73e..4bc9913f8 100644
--- a/src/state/messages/convo.ts
+++ b/src/state/messages/convo.ts
@@ -1,3 +1,4 @@
+import {AppBskyActorDefs} from '@atproto/api'
 import {
   BskyAgent,
   ChatBskyConvoDefs,
@@ -24,7 +25,7 @@ export enum ConvoStatus {
 
 export type ConvoItem =
   | {
-      type: 'message'
+      type: 'message' | 'pending-message'
       key: string
       message: ChatBskyConvoDefs.MessageView
       nextMessage:
@@ -42,11 +43,6 @@ export type ConvoItem =
         | null
     }
   | {
-      type: 'pending-message'
-      key: string
-      message: ChatBskyConvoSendMessage.InputSchema['message']
-    }
-  | {
       type: 'pending-retry'
       key: string
       retry: () => void
@@ -85,17 +81,19 @@ export function isConvoItemMessage(
 }
 
 export class Convo {
-  private convoId: string
   private agent: BskyAgent
   private __tempFromUserDid: string
 
   private status: ConvoStatus = ConvoStatus.Uninitialized
   private error: any
-  private convo: ChatBskyConvoDefs.ConvoView | undefined
   private historyCursor: string | undefined | null = undefined
   private isFetchingHistory = false
   private eventsCursor: string | undefined = undefined
 
+  convoId: string
+  convo: ChatBskyConvoDefs.ConvoView | undefined
+  sender: AppBskyActorDefs.ProfileViewBasic | undefined
+
   private pastMessages: Map<
     string,
     ChatBskyConvoDefs.MessageView | ChatBskyConvoDefs.DeletedMessageView
@@ -137,6 +135,9 @@ export class Convo {
       const {convo} = response.data
 
       this.convo = convo
+      this.sender = this.convo.members.find(
+        m => m.did === this.__tempFromUserDid,
+      )
       this.status = ConvoStatus.Ready
 
       this.commit()
@@ -324,7 +325,7 @@ export class Convo {
       this.newMessages.set(res.id, {
         ...res,
         $type: 'chat.bsky.convo.defs#messageView',
-        sender: this.convo?.members.find(m => m.did === this.__tempFromUserDid),
+        sender: this.sender,
       })
       this.pendingMessages.delete(id)
 
@@ -440,7 +441,14 @@ export class Convo {
       items.unshift({
         type: 'pending-message',
         key: m.id,
-        message: m.message,
+        message: {
+          ...m.message,
+          id: nanoid(),
+          rev: '__fake__',
+          sentAt: new Date().toISOString(),
+          sender: this.sender,
+        },
+        nextMessage: null,
       })
     })