Files
workavia-mail-front/model/lib/extensions/list_attachment_extension.dart
T
dab246 a352bd5ada TF-2331 Fix Read receipt includes weird attachments that are impossible to download
(cherry picked from commit 72ae6553ea53fa4bbba74bfdb1c9a3ec82103fc0)
2024-01-08 14:25:26 +01:00

43 lines
1.5 KiB
Dart

import 'package:collection/collection.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:model/email/attachment.dart';
extension ListAttachmentExtension on List<Attachment> {
num totalSize() {
if (isNotEmpty) {
final currentListSize = map((attachment) => attachment.size?.value ?? 0).toList();
final totalSize = currentListSize.reduce((sum, size) => sum + size);
return totalSize;
}
return 0;
}
List<Attachment> getListAttachmentsDisplayedOutside(List<Attachment>? htmlBodyAttachments) {
return where((attachment) => _validateOutsideAttachment(attachment, htmlBodyAttachments)).toList();
}
bool _validateOutsideAttachment(Attachment attachment, List<Attachment>? htmlBodyAttachments) {
final result = (attachment.noCid() || !attachment.isInlined()) && (htmlBodyAttachments == null || !htmlBodyAttachments._include(attachment));
return result;
}
bool _include(Attachment newAttachment) {
final matchedAttachment = firstWhereOrNull((attachment) => attachment.blobId == newAttachment.blobId);
return matchedAttachment != null;
}
List<Attachment> get listAttachmentsDisplayedInContent => where((attachment) => attachment.hasCid()).toList();
Map<String, String> toMapCidImageDownloadUrl({
required AccountId accountId,
required String downloadUrl
}) {
final mapUrlDownloadCID = {
for (var attachment in listAttachmentsDisplayedInContent)
attachment.cid! : attachment.getDownloadUrl(downloadUrl, accountId)
};
return mapUrlDownloadCID;
}
}