From 7df56f3f661dde091b5706392ab0ffaf02db4bff Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 19 Jul 2023 17:08:01 +0700 Subject: [PATCH] TF-1857 Add headerCalendarEvent to email cached (cherry picked from commit 6d884bb6db5365c6308404fb5d98fd356be4109e) --- .../extensions/email_cache_extension.dart | 4 ++ .../data/extensions/email_extension.dart | 2 + .../map_header_identifier_id_extension.dart | 7 ++++ .../thread/data/model/email_cache.dart | 5 +++ model/lib/extensions/email_extension.dart | 39 ++++++++++--------- .../presentation_email_extension.dart | 3 ++ 6 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 lib/features/thread/data/extensions/map_header_identifier_id_extension.dart diff --git a/lib/features/thread/data/extensions/email_cache_extension.dart b/lib/features/thread/data/extensions/email_cache_extension.dart index 914f57612..5d101f04a 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 037e9182d..d6a02dd60 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 000000000..081749cc4 --- /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 a407d5125..6db80e1d5 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 63d57e8e8..e6b4f119b 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 aa57db66f..24c6b9f97 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 ); }