From 5a394e17199cec1f08eca00ef790a42332a5eddc Mon Sep 17 00:00:00 2001 From: HuyNguyen Date: Mon, 5 Jun 2023 01:50:52 +0700 Subject: [PATCH] TF-1865: Get content sending email when open item (cherry picked from commit 3fdec172d72e27020187679d79ffe4f44953678b) --- model/lib/email/presentation_email.dart | 24 ++++++++++++++++- model/lib/extensions/email_extension.dart | 33 ++++++++++++----------- 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/model/lib/email/presentation_email.dart b/model/lib/email/presentation_email.dart index e491ae02a..817aff394 100644 --- a/model/lib/email/presentation_email.dart +++ b/model/lib/email/presentation_email.dart @@ -7,10 +7,14 @@ import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:jmap_dart_client/jmap/core/utc_date.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; +import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart'; +import 'package:jmap_dart_client/jmap/mail/email/email_body_value.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_header.dart'; import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; +import 'package:model/email/email_content.dart'; import 'package:model/extensions/email_address_extension.dart'; +import 'package:model/extensions/media_type_extension.dart'; import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:model/mailbox/select_mode.dart'; @@ -35,6 +39,8 @@ class PresentationEmail with EquatableMixin { final Uri? routeWeb; final PresentationMailbox? mailboxContain; final List? emailHeader; + final Set? htmlBody; + final Map? bodyValues; PresentationEmail({ this.id, @@ -55,7 +61,9 @@ class PresentationEmail with EquatableMixin { this.selectMode = SelectMode.INACTIVE, this.routeWeb, this.mailboxContain, - this.emailHeader + this.emailHeader, + this.htmlBody, + this.bodyValues, }); String getSenderName() { @@ -107,6 +115,20 @@ class PresentationEmail with EquatableMixin { return DateFormat(sentAt?.value.toPattern(), newLocale).format(sentAt?.value ?? DateTime.now()); } + List get emailContentList { + final newHtmlBody = htmlBody + ?.where((emailBody) => emailBody.partId != null && emailBody.type != null) + .toList() ?? []; + + final mapHtmlBody = { for (var emailBody in newHtmlBody) emailBody.partId! : emailBody.type! }; + + final emailContents = bodyValues?.entries + .map((entries) => EmailContent(mapHtmlBody[entries.key].toEmailContentType(), entries.value.value)) + .toList(); + + return emailContents ?? []; + } + @override List get props => [ id, diff --git a/model/lib/extensions/email_extension.dart b/model/lib/extensions/email_extension.dart index 7bd6f34fa..d66b01076 100644 --- a/model/lib/extensions/email_extension.dart +++ b/model/lib/extensions/email_extension.dart @@ -145,22 +145,23 @@ extension EmailExtension on Email { } ) { return PresentationEmail( - id: emailId ?? id, - keywords: keywords, - size: size, - receivedAt: receivedAt, - hasAttachment: hasAttachment, - preview: preview, - subject: subject, - sentAt: createAt ?? sentAt, - from: from, - to: to, - cc: cc, - bcc: bcc, - replyTo: replyTo, - mailboxIds: mailboxIds, - selectMode: selectMode, - emailHeader: headers?.toList() + id: emailId ?? id, + keywords: keywords, + size: size, + receivedAt: receivedAt, + hasAttachment: hasAttachment, + preview: preview, + subject: subject, + sentAt: createAt ?? sentAt, + from: from, + to: to, + cc: cc, + bcc: bcc, + replyTo: replyTo, + mailboxIds: mailboxIds, + selectMode: selectMode, + emailHeader: headers?.toList(), + bodyValues: bodyValues ); } } \ No newline at end of file