TF-3514 Perform sequential upload on base64 image when converting to cid

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-03-10 15:16:11 +07:00
committed by Dat H. Pham
parent b78aea6103
commit 0e2ea6a635
@@ -140,7 +140,6 @@ class HtmlAnalyzer {
} }
final Set<EmailBodyPart> inlineAttachmentsSet = {}; final Set<EmailBodyPart> inlineAttachmentsSet = {};
final List<Future<void>> asyncTasks = [];
for (final imgTag in listImgTag) { for (final imgTag in listImgTag) {
final attributes = imgTag.attributes; final attributes = imgTag.attributes;
@@ -166,29 +165,25 @@ class HtmlAnalyzer {
? idImg!.substring(cidPrefixKey.length) ? idImg!.substring(cidPrefixKey.length)
: _uuid.v1(); : _uuid.v1();
asyncTasks.add(_retrieveAttachmentFromUpload( final attachmentRecord = await _retrieveAttachmentFromUpload(
taskId: taskId, taskId: taskId,
uploadUri: uploadUri, uploadUri: uploadUri,
base64ImageTag: imageSrc!, base64ImageTag: imageSrc!,
).then((attachmentRecord) { );
if (attachmentRecord == null) return;
final newInlineAttachment = attachmentRecord.$1.toAttachmentWithDisposition( if (attachmentRecord == null) continue;
disposition: ContentDisposition.inline,
cid: attachmentRecord.$2,
);
final newCid = newInlineAttachment.cid!; final newInlineAttachment = attachmentRecord.$1.toAttachmentWithDisposition(
inlineAttachments[newCid] = newInlineAttachment; disposition: ContentDisposition.inline,
attributes['src'] = '$cidPrefixKey$newCid'; cid: attachmentRecord.$2,
attributes.remove('id'); );
inlineAttachmentsSet.add(newInlineAttachment.toEmailBodyPart(charset: Constant.base64Charset)); final newCid = newInlineAttachment.cid!;
})); inlineAttachments[newCid] = newInlineAttachment;
} attributes['src'] = '$cidPrefixKey$newCid';
attributes.remove('id');
if (asyncTasks.isNotEmpty) { inlineAttachmentsSet.add(newInlineAttachment.toEmailBodyPart(charset: Constant.base64Charset));
await Future.wait(asyncTasks);
} }
return Tuple2(document.body?.innerHtml ?? emailContent, inlineAttachmentsSet); return Tuple2(document.body?.innerHtml ?? emailContent, inlineAttachmentsSet);