TF-1865: Get content sending email when open item

(cherry picked from commit 3fdec172d72e27020187679d79ffe4f44953678b)
This commit is contained in:
HuyNguyen
2023-06-05 01:50:52 +07:00
committed by Dat Vu
parent 48d32b048d
commit 5a394e1719
2 changed files with 40 additions and 17 deletions
+23 -1
View File
@@ -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>? emailHeader;
final Set<EmailBodyPart>? htmlBody;
final Map<PartId, EmailBodyValue>? 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<EmailContent> get emailContentList {
final newHtmlBody = htmlBody
?.where((emailBody) => emailBody.partId != null && emailBody.type != null)
.toList() ?? <EmailBodyPart>[];
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<Object?> get props => [
id,
+17 -16
View File
@@ -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
);
}
}