parent
1a07e23192
commit
a20fe4c9a0
|
@ -106,6 +106,7 @@ export class Convo {
|
||||||
string,
|
string,
|
||||||
{id: string; message: ChatBskyConvoSendMessage.InputSchema['message']}
|
{id: string; message: ChatBskyConvoSendMessage.InputSchema['message']}
|
||||||
> = new Map()
|
> = new Map()
|
||||||
|
private deletedMessages: Set<string> = new Set()
|
||||||
private footerItems: Map<string, ConvoItem> = new Map()
|
private footerItems: Map<string, ConvoItem> = new Map()
|
||||||
|
|
||||||
private pendingEventIngestion: Promise<void> | undefined
|
private pendingEventIngestion: Promise<void> | undefined
|
||||||
|
@ -278,6 +279,8 @@ export class Convo {
|
||||||
* this.pastMessages.set(log.message.id, log.message)
|
* this.pastMessages.set(log.message.id, log.message)
|
||||||
*/
|
*/
|
||||||
this.pastMessages.delete(log.message.id)
|
this.pastMessages.delete(log.message.id)
|
||||||
|
this.newMessages.delete(log.message.id)
|
||||||
|
this.deletedMessages.delete(log.message.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -411,6 +414,30 @@ export class Convo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async deleteMessage(messageId: string) {
|
||||||
|
this.deletedMessages.add(messageId)
|
||||||
|
this.commit()
|
||||||
|
|
||||||
|
try {
|
||||||
|
await this.agent.api.chat.bsky.convo.deleteMessageForSelf(
|
||||||
|
{
|
||||||
|
convoId: this.convoId,
|
||||||
|
messageId,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
encoding: 'application/json',
|
||||||
|
headers: {
|
||||||
|
Authorization: this.__tempFromUserDid,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
} catch (e) {
|
||||||
|
this.deletedMessages.delete(messageId)
|
||||||
|
this.commit()
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Items in reverse order, since FlatList inverts
|
* Items in reverse order, since FlatList inverts
|
||||||
*/
|
*/
|
||||||
|
@ -474,36 +501,43 @@ export class Convo {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
return items.map((item, i) => {
|
return items
|
||||||
let nextMessage = null
|
.filter(item => {
|
||||||
const isMessage = isConvoItemMessage(item)
|
if (isConvoItemMessage(item)) {
|
||||||
|
return !this.deletedMessages.has(item.message.id)
|
||||||
if (isMessage) {
|
}
|
||||||
if (
|
return true
|
||||||
isMessage &&
|
})
|
||||||
(ChatBskyConvoDefs.isMessageView(item.message) ||
|
.map((item, i) => {
|
||||||
ChatBskyConvoDefs.isDeletedMessageView(item.message))
|
let nextMessage = null
|
||||||
) {
|
const isMessage = isConvoItemMessage(item)
|
||||||
const next = items[i - 1]
|
|
||||||
|
|
||||||
|
if (isMessage) {
|
||||||
if (
|
if (
|
||||||
isConvoItemMessage(next) &&
|
isMessage &&
|
||||||
next &&
|
(ChatBskyConvoDefs.isMessageView(item.message) ||
|
||||||
(ChatBskyConvoDefs.isMessageView(next.message) ||
|
ChatBskyConvoDefs.isDeletedMessageView(item.message))
|
||||||
ChatBskyConvoDefs.isDeletedMessageView(next.message))
|
|
||||||
) {
|
) {
|
||||||
nextMessage = next.message
|
const next = items[i - 1]
|
||||||
|
|
||||||
|
if (
|
||||||
|
isConvoItemMessage(next) &&
|
||||||
|
next &&
|
||||||
|
(ChatBskyConvoDefs.isMessageView(next.message) ||
|
||||||
|
ChatBskyConvoDefs.isDeletedMessageView(next.message))
|
||||||
|
) {
|
||||||
|
nextMessage = next.message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
nextMessage,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return item
|
||||||
...item,
|
})
|
||||||
nextMessage,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return item
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
|
|
Loading…
Reference in New Issue