From 80dff51c77e928141d16ab715c8550ea0218f3e2 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 23 Apr 2025 01:23:07 +0700 Subject: [PATCH] TF-3685 Fix `From` field is displayed incorrectly in Drafts on mobile Signed-off-by: dab246 --- .../upgrade_hive_database_steps_v15.dart | 17 +++++++++++++++++ lib/features/caching/config/cache_version.dart | 2 +- .../setup_email_content_extension.dart | 3 +++ .../extensions/detailed_email_extension.dart | 4 +++- .../detailed_email_hive_cache_extension.dart | 6 ++++++ .../domain/extensions/email_extension.dart | 1 + .../email/domain/model/detailed_email.dart | 3 +++ .../usecases/get_email_content_interactor.dart | 1 + .../model/detailed_email_hive_cache.dart | 5 +++++ .../domain/constants/thread_constants.dart | 1 + 10 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 lib/features/base/upgradeable/upgrade_hive_database_steps_v15.dart diff --git a/lib/features/base/upgradeable/upgrade_hive_database_steps_v15.dart b/lib/features/base/upgradeable/upgrade_hive_database_steps_v15.dart new file mode 100644 index 000000000..62ac09c4c --- /dev/null +++ b/lib/features/base/upgradeable/upgrade_hive_database_steps_v15.dart @@ -0,0 +1,17 @@ + +import 'package:tmail_ui_user/features/base/upgradeable/upgrade_database_steps.dart'; +import 'package:tmail_ui_user/features/caching/caching_manager.dart'; + +class UpgradeHiveDatabaseStepsV15 extends UpgradeDatabaseSteps { + + final CachingManager _cachingManager; + + UpgradeHiveDatabaseStepsV15(this._cachingManager); + + @override + Future onUpgrade(int oldVersion, int newVersion) async { + if (oldVersion > 0 && oldVersion < newVersion && newVersion == 15) { + await _cachingManager.clearDetailedEmailCache(); + } + } +} \ No newline at end of file diff --git a/lib/features/caching/config/cache_version.dart b/lib/features/caching/config/cache_version.dart index 6bd859e26..5c1f5b5ff 100644 --- a/lib/features/caching/config/cache_version.dart +++ b/lib/features/caching/config/cache_version.dart @@ -1,4 +1,4 @@ class CacheVersion { - static const int hiveDBVersion = 14; + static const int hiveDBVersion = 15; } \ No newline at end of file diff --git a/lib/features/composer/presentation/extensions/setup_email_content_extension.dart b/lib/features/composer/presentation/extensions/setup_email_content_extension.dart index e0cd6cc6e..e38842acd 100644 --- a/lib/features/composer/presentation/extensions/setup_email_content_extension.dart +++ b/lib/features/composer/presentation/extensions/setup_email_content_extension.dart @@ -86,6 +86,9 @@ extension SetupEmailContentExtension on ComposerController { setupEmailRequestReadReceiptFlagForEditDraft( uiState.emailCurrent.hasRequestReadReceipt, ); + setupSelectedIdentityForEditDraft( + uiState.emailCurrent.identityIdFromHeader, + ); } emailContentsViewState.value = Right(uiState); diff --git a/lib/features/email/domain/extensions/detailed_email_extension.dart b/lib/features/email/domain/extensions/detailed_email_extension.dart index 7d68b797e..22545d138 100644 --- a/lib/features/email/domain/extensions/detailed_email_extension.dart +++ b/lib/features/email/domain/extensions/detailed_email_extension.dart @@ -21,6 +21,7 @@ extension DetailedEmailExtension on DetailedEmail { references: references?.ids.toList(), inlineImages: inlineImages?.toHiveCache(), sMimeStatusHeader: sMimeStatusHeader?.toMapString(), + identityHeader: identityHeader?.toMapString(), ); } @@ -40,7 +41,8 @@ extension DetailedEmailExtension on DetailedEmail { messageId: messageId, references: references, inlineImages: inlineImages, - sMimeStatusHeader: sMimeStatusHeader + sMimeStatusHeader: sMimeStatusHeader, + identityHeader: identityHeader, ); } } \ No newline at end of file diff --git a/lib/features/email/domain/extensions/detailed_email_hive_cache_extension.dart b/lib/features/email/domain/extensions/detailed_email_hive_cache_extension.dart index f6eb30ff7..94b431f73 100644 --- a/lib/features/email/domain/extensions/detailed_email_hive_cache_extension.dart +++ b/lib/features/email/domain/extensions/detailed_email_hive_cache_extension.dart @@ -29,6 +29,12 @@ extension DetailedEmailHiveCacheExtension on DetailedEmailHiveCache { sMimeStatusHeader: sMimeStatusHeader != null ? Map.fromIterables(sMimeStatusHeader!.keys.map((value) => IndividualHeaderIdentifier(value)), sMimeStatusHeader!.values) : null, + identityHeader: identityHeader != null + ? Map.fromIterables( + identityHeader!.keys.map((value) => IndividualHeaderIdentifier(value)), + identityHeader!.values, + ) + : null, ); } } \ No newline at end of file diff --git a/lib/features/email/domain/extensions/email_extension.dart b/lib/features/email/domain/extensions/email_extension.dart index b043363ab..85b15036c 100644 --- a/lib/features/email/domain/extensions/email_extension.dart +++ b/lib/features/email/domain/extensions/email_extension.dart @@ -17,6 +17,7 @@ extension EmailExtension on Email { references: references, inlineImages: allAttachments.listAttachmentsDisplayedInContent, sMimeStatusHeader: sMimeStatusHeader, + identityHeader: identityHeader, ); } } \ No newline at end of file diff --git a/lib/features/email/domain/model/detailed_email.dart b/lib/features/email/domain/model/detailed_email.dart index ab3fe6331..38d983066 100644 --- a/lib/features/email/domain/model/detailed_email.dart +++ b/lib/features/email/domain/model/detailed_email.dart @@ -17,6 +17,7 @@ class DetailedEmail with EquatableMixin { final MessageIdsHeaderValue? references; final List? inlineImages; final Map? sMimeStatusHeader; + final Map? identityHeader; DetailedEmail({ required this.emailId, @@ -30,6 +31,7 @@ class DetailedEmail with EquatableMixin { this.references, this.inlineImages, this.sMimeStatusHeader, + this.identityHeader, }); @override @@ -45,5 +47,6 @@ class DetailedEmail with EquatableMixin { references, inlineImages, sMimeStatusHeader, + identityHeader, ]; } \ No newline at end of file diff --git a/lib/features/email/domain/usecases/get_email_content_interactor.dart b/lib/features/email/domain/usecases/get_email_content_interactor.dart index 48fc891d3..f7f9d5cb0 100644 --- a/lib/features/email/domain/usecases/get_email_content_interactor.dart +++ b/lib/features/email/domain/usecases/get_email_content_interactor.dart @@ -182,6 +182,7 @@ class GetEmailContentInteractor { emailCurrent: emailCache.copyWith( headers: detailedEmail.headers, sMimeStatusHeader: detailedEmail.sMimeStatusHeader, + identityHeader: detailedEmail.identityHeader, ) )); } catch (e) { diff --git a/lib/features/offline_mode/model/detailed_email_hive_cache.dart b/lib/features/offline_mode/model/detailed_email_hive_cache.dart index fb44c7f25..a69da37c1 100644 --- a/lib/features/offline_mode/model/detailed_email_hive_cache.dart +++ b/lib/features/offline_mode/model/detailed_email_hive_cache.dart @@ -41,6 +41,9 @@ class DetailedEmailHiveCache extends HiveObject with EquatableMixin { @HiveField(9) Map? sMimeStatusHeader; + @HiveField(10) + Map? identityHeader; + DetailedEmailHiveCache({ required this.emailId, required this.timeSaved, @@ -52,6 +55,7 @@ class DetailedEmailHiveCache extends HiveObject with EquatableMixin { this.references, this.inlineImages, this.sMimeStatusHeader, + this.identityHeader, }); @override @@ -66,5 +70,6 @@ class DetailedEmailHiveCache extends HiveObject with EquatableMixin { references, inlineImages, sMimeStatusHeader, + identityHeader, ]; } \ No newline at end of file diff --git a/lib/features/thread/domain/constants/thread_constants.dart b/lib/features/thread/domain/constants/thread_constants.dart index e4cc44cb8..df7717196 100644 --- a/lib/features/thread/domain/constants/thread_constants.dart +++ b/lib/features/thread/domain/constants/thread_constants.dart @@ -64,6 +64,7 @@ class ThreadConstants { EmailProperty.attachments, EmailProperty.headers, IndividualHeaderIdentifier.sMimeStatusHeader.value, + IndividualHeaderIdentifier.identityHeader.value, }); static final propertiesCalendarEvent = Properties({