Handle message deletions

This commit is contained in:
Eric Bailey
2024-05-02 11:56:10 -05:00
parent bff055f618
commit 91cef31f1b
+35 -1
View File
@@ -106,6 +106,7 @@ export class Convo {
string,
{id: string; message: ChatBskyConvoSendMessage.InputSchema['message']}
> = new Map()
private deletedMessages: Set<string> = new Set()
private footerItems: Map<string, ConvoItem> = new Map()
private pendingEventIngestion: Promise<void> | undefined
@@ -474,7 +475,14 @@ export class Convo {
}
})
return items.map((item, i) => {
return items
.filter(item => {
if (isConvoItemMessage(item)) {
return !this.deletedMessages.has(item.message.id)
}
return true
})
.map((item, i) => {
let nextMessage = null
const isMessage = isConvoItemMessage(item)
@@ -506,6 +514,32 @@ export class Convo {
})
}
async deleteMessage(messageId: string) {
this.deletedMessages.add(messageId)
this.commit()
await this.agent.api.chat.bsky.convo.deleteMessageForSelf(
{
convoId: this.convoId,
messageId,
},
{
encoding: 'application/json',
headers: {
Authorization: this.__tempFromUserDid,
},
},
)
// remove from optimistic
this.deletedMessages.delete(messageId)
// remove from either new or past messages
this.pastMessages.delete(messageId)
this.newMessages.delete(messageId)
// commit
this.commit()
}
destroy() {
this.status = ConvoStatus.Destroyed
this.commit()