Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

[Clipclops] Deletions (#3824)

* Handle message deletions

* Handle failures

authored by

Eric Bailey and committed by
GitHub
a20fe4c9 1a07e231

+57 -23
+57 -23
src/state/messages/convo.ts
··· 106 106 string, 107 107 {id: string; message: ChatBskyConvoSendMessage.InputSchema['message']} 108 108 > = new Map() 109 + private deletedMessages: Set<string> = new Set() 109 110 private footerItems: Map<string, ConvoItem> = new Map() 110 111 111 112 private pendingEventIngestion: Promise<void> | undefined ··· 278 279 * this.pastMessages.set(log.message.id, log.message) 279 280 */ 280 281 this.pastMessages.delete(log.message.id) 282 + this.newMessages.delete(log.message.id) 283 + this.deletedMessages.delete(log.message.id) 281 284 } 282 285 } 283 286 } ··· 411 414 } 412 415 } 413 416 417 + async deleteMessage(messageId: string) { 418 + this.deletedMessages.add(messageId) 419 + this.commit() 420 + 421 + try { 422 + await this.agent.api.chat.bsky.convo.deleteMessageForSelf( 423 + { 424 + convoId: this.convoId, 425 + messageId, 426 + }, 427 + { 428 + encoding: 'application/json', 429 + headers: { 430 + Authorization: this.__tempFromUserDid, 431 + }, 432 + }, 433 + ) 434 + } catch (e) { 435 + this.deletedMessages.delete(messageId) 436 + this.commit() 437 + throw e 438 + } 439 + } 440 + 414 441 /* 415 442 * Items in reverse order, since FlatList inverts 416 443 */ ··· 474 501 } 475 502 }) 476 503 477 - return items.map((item, i) => { 478 - let nextMessage = null 479 - const isMessage = isConvoItemMessage(item) 480 - 481 - if (isMessage) { 482 - if ( 483 - isMessage && 484 - (ChatBskyConvoDefs.isMessageView(item.message) || 485 - ChatBskyConvoDefs.isDeletedMessageView(item.message)) 486 - ) { 487 - const next = items[i - 1] 504 + return items 505 + .filter(item => { 506 + if (isConvoItemMessage(item)) { 507 + return !this.deletedMessages.has(item.message.id) 508 + } 509 + return true 510 + }) 511 + .map((item, i) => { 512 + let nextMessage = null 513 + const isMessage = isConvoItemMessage(item) 488 514 515 + if (isMessage) { 489 516 if ( 490 - isConvoItemMessage(next) && 491 - next && 492 - (ChatBskyConvoDefs.isMessageView(next.message) || 493 - ChatBskyConvoDefs.isDeletedMessageView(next.message)) 517 + isMessage && 518 + (ChatBskyConvoDefs.isMessageView(item.message) || 519 + ChatBskyConvoDefs.isDeletedMessageView(item.message)) 494 520 ) { 495 - nextMessage = next.message 521 + const next = items[i - 1] 522 + 523 + if ( 524 + isConvoItemMessage(next) && 525 + next && 526 + (ChatBskyConvoDefs.isMessageView(next.message) || 527 + ChatBskyConvoDefs.isDeletedMessageView(next.message)) 528 + ) { 529 + nextMessage = next.message 530 + } 496 531 } 497 - } 498 532 499 - return { 500 - ...item, 501 - nextMessage, 533 + return { 534 + ...item, 535 + nextMessage, 536 + } 502 537 } 503 - } 504 538 505 - return item 506 - }) 539 + return item 540 + }) 507 541 } 508 542 509 543 destroy() {