diff --git a/lib/features/thread/data/extensions/email_cache_extension.dart b/lib/features/thread/data/extensions/email_cache_extension.dart index 914f57612a..5d101f04ab 100644 --- a/lib/features/thread/data/extensions/email_cache_extension.dart +++ b/lib/features/thread/data/extensions/email_cache_extension.dart @@ -4,6 +4,7 @@ import 'package:jmap_dart_client/jmap/core/id.dart'; 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/individual_header_identifier.dart'; import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:tmail_ui_user/features/cleanup/domain/model/email_cleanup_rule.dart'; @@ -31,6 +32,9 @@ extension EmailCacheExtension on EmailCache { mailboxIds: mailboxIds != null ? Map.fromIterables(mailboxIds!.keys.map((value) => MailboxId(Id(value))), mailboxIds!.values) : null, + headerCalendarEvent: headerCalendarEvent != null + ? Map.fromIterables(headerCalendarEvent!.keys.map((value) => IndividualHeaderIdentifier(value)), headerCalendarEvent!.values) + : null ); } diff --git a/lib/features/thread/data/extensions/email_extension.dart b/lib/features/thread/data/extensions/email_extension.dart index 037e9182d7..d6a02dd60d 100644 --- a/lib/features/thread/data/extensions/email_extension.dart +++ b/lib/features/thread/data/extensions/email_extension.dart @@ -1,5 +1,6 @@ import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; +import 'package:tmail_ui_user/features/thread/data/extensions/map_header_identifier_id_extension.dart'; import 'package:tmail_ui_user/features/thread/data/model/email_cache.dart'; import 'package:tmail_ui_user/features/thread/data/extensions/map_keywords_extension.dart'; import 'package:tmail_ui_user/features/thread/data/extensions/email_address_extension.dart'; @@ -23,6 +24,7 @@ extension EmailExtension on Email { bcc: bcc?.map((emailAddress) => emailAddress.toEmailAddressHiveCache()).toList(), replyTo: replyTo?.map((emailAddress) => emailAddress.toEmailAddressHiveCache()).toList(), mailboxIds: mailboxIds?.toMapString(), + headerCalendarEvent: headerCalendarEvent?.toMapString(), ); } diff --git a/lib/features/thread/data/extensions/map_header_identifier_id_extension.dart b/lib/features/thread/data/extensions/map_header_identifier_id_extension.dart new file mode 100644 index 0000000000..081749cc40 --- /dev/null +++ b/lib/features/thread/data/extensions/map_header_identifier_id_extension.dart @@ -0,0 +1,7 @@ + +import 'package:jmap_dart_client/jmap/mail/email/individual_header_identifier.dart'; + +extension MapHeaderIdentifierExtension on Map { + + Map toMapString() => Map.fromIterables(keys.map((identifier) => identifier.value), values); +} \ No newline at end of file diff --git a/lib/features/thread/data/model/email_cache.dart b/lib/features/thread/data/model/email_cache.dart index a407d5125c..6db80e1d50 100644 --- a/lib/features/thread/data/model/email_cache.dart +++ b/lib/features/thread/data/model/email_cache.dart @@ -51,6 +51,9 @@ class EmailCache extends HiveObject with EquatableMixin { @HiveField(13) Map? mailboxIds; + @HiveField(14) + Map? headerCalendarEvent; + EmailCache( this.id, { @@ -67,6 +70,7 @@ class EmailCache extends HiveObject with EquatableMixin { this.bcc, this.replyTo, this.mailboxIds, + this.headerCalendarEvent, } ); @@ -86,5 +90,6 @@ class EmailCache extends HiveObject with EquatableMixin { preview, hasAttachment, mailboxIds, + headerCalendarEvent, ]; } \ No newline at end of file diff --git a/model/lib/extensions/email_extension.dart b/model/lib/extensions/email_extension.dart index 63d57e8e8a..e6b4f119b8 100644 --- a/model/lib/extensions/email_extension.dart +++ b/model/lib/extensions/email_extension.dart @@ -4,6 +4,7 @@ import 'dart:convert'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart'; +import 'package:jmap_dart_client/jmap/mail/email/individual_header_identifier.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/model.dart'; @@ -38,24 +39,25 @@ extension EmailExtension on Email { Email updatedEmail({Map? newKeywords, Map? newMailboxIds}) { return Email( - id: id, - keywords: newKeywords ?? keywords, - size: size, - receivedAt: receivedAt, - hasAttachment: hasAttachment, - preview: preview, - subject: subject, - sentAt: sentAt, - from: from, - to: to, - cc: cc, - bcc: bcc, - replyTo: replyTo, - mailboxIds: newMailboxIds ?? mailboxIds, - htmlBody: htmlBody, - bodyValues: bodyValues, - headerUserAgent: headerUserAgent, - attachments: attachments + id: id, + keywords: newKeywords ?? keywords, + size: size, + receivedAt: receivedAt, + hasAttachment: hasAttachment, + preview: preview, + subject: subject, + sentAt: sentAt, + from: from, + to: to, + cc: cc, + bcc: bcc, + replyTo: replyTo, + mailboxIds: newMailboxIds ?? mailboxIds, + htmlBody: htmlBody, + bodyValues: bodyValues, + headerUserAgent: headerUserAgent, + attachments: attachments, + headerCalendarEvent: headerCalendarEvent ); } @@ -97,6 +99,7 @@ extension EmailExtension on Email { bcc: updatedProperties.contain(EmailProperty.bcc) ? newEmail.bcc : bcc, replyTo: updatedProperties.contain(EmailProperty.replyTo) ? newEmail.replyTo : replyTo, mailboxIds: updatedProperties.contain(EmailProperty.mailboxIds) ? newEmail.mailboxIds : mailboxIds, + headerCalendarEvent: updatedProperties.contain(IndividualHeaderIdentifier.headerCalendarEvent.value) ? newEmail.headerCalendarEvent : headerCalendarEvent, ); } diff --git a/model/lib/extensions/presentation_email_extension.dart b/model/lib/extensions/presentation_email_extension.dart index aa57db66f2..24c6b9f973 100644 --- a/model/lib/extensions/presentation_email_extension.dart +++ b/model/lib/extensions/presentation_email_extension.dart @@ -97,6 +97,9 @@ extension PresentationEmailExtension on PresentationEmail { replyTo: replyTo, htmlBody: htmlBody, bodyValues: bodyValues, + mailboxIds: mailboxIds, + headers: emailHeader?.toSet(), + headerCalendarEvent: headerCalendarEvent ); }