fix: Bug - Sending files and attachment issues
Hydrate playable media after disk receive, relay file-announce to sibling devices via account_sync, bind DM attachments to pre-allocated message ids, and improve gallery retry/cancel UX with bounded parallel auto-downloads. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -47,6 +47,7 @@ import {
|
||||
ChatMessageDeleteEvent,
|
||||
ChatMessageEditEvent,
|
||||
ChatMessageEmbedRemoveEvent,
|
||||
ChatMessageAttachmentEvent,
|
||||
ChatMessageImageContextMenuEvent,
|
||||
ChatMessageImageLightboxEvent,
|
||||
ChatMessageReactionEvent,
|
||||
@@ -340,14 +341,17 @@ export class ChatMessagesComponent {
|
||||
}
|
||||
|
||||
openImageGallery(attachments: Attachment[]): void {
|
||||
const availableImages = attachments.filter((attachment) => attachment.available && attachment.objectUrl);
|
||||
|
||||
if (availableImages.length < 2) {
|
||||
if (attachments.length < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.attachmentsSvc.pinDisplayBlobs(availableImages);
|
||||
this.galleryAttachments.set(availableImages);
|
||||
const displayableImages = attachments.filter((attachment) => attachment.available && attachment.objectUrl);
|
||||
|
||||
if (displayableImages.length > 0) {
|
||||
this.attachmentsSvc.pinDisplayBlobs(displayableImages);
|
||||
}
|
||||
|
||||
this.galleryAttachments.set(attachments);
|
||||
}
|
||||
|
||||
closeImageGallery(): void {
|
||||
@@ -372,6 +376,20 @@ export class ChatMessagesComponent {
|
||||
await this.attachmentDownload.downloadToUserLocation(attachment);
|
||||
}
|
||||
|
||||
retryGalleryImage(event: ChatMessageAttachmentEvent): void {
|
||||
const { messageId, attachment } = event;
|
||||
|
||||
if ((attachment.receivedBytes ?? 0) > 0 || this.attachmentsSvc.hasPendingRequest(messageId, attachment.id)) {
|
||||
this.attachmentsSvc.cancelRequest(messageId, attachment);
|
||||
}
|
||||
|
||||
void this.attachmentsSvc.requestImageFromAnyPeer(messageId, attachment);
|
||||
}
|
||||
|
||||
cancelGalleryImage(event: ChatMessageAttachmentEvent): void {
|
||||
this.attachmentsSvc.cancelRequest(event.messageId, event.attachment);
|
||||
}
|
||||
|
||||
async copyImageToClipboard(attachment: Attachment): Promise<void> {
|
||||
this.closeImageContextMenu();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user