From 94b6814ab1ef486b80a2cf9685ab1def6c15f3d9 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 20 Feb 2025 08:30:52 +0700 Subject: [PATCH] TF-3449 Update Mark as Important state when open draft email and reload page Signed-off-by: dab246 --- .../usecases/save_composer_cache_on_web_interactor.dart | 1 + lib/features/composer/presentation/composer_controller.dart | 3 +++ .../composer/presentation/model/saved_email_draft.dart | 5 ++++- .../email/presentation/model/composer_arguments.dart | 6 ++++++ .../mailbox_dashboard/data/model/composer_cache.dart | 3 +++ .../composer/presentation/composer_controller_test.dart | 2 +- 6 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/features/composer/domain/usecases/save_composer_cache_on_web_interactor.dart b/lib/features/composer/domain/usecases/save_composer_cache_on_web_interactor.dart index b3092d467..417dee41d 100644 --- a/lib/features/composer/domain/usecases/save_composer_cache_on_web_interactor.dart +++ b/lib/features/composer/domain/usecases/save_composer_cache_on_web_interactor.dart @@ -35,6 +35,7 @@ class SaveComposerCacheOnWebInteractor { composerCache: ComposerCache( email: emailCreated, hasRequestReadReceipt: createEmailRequest.hasRequestReadReceipt, + isMarkAsImportant: createEmailRequest.isMarkAsImportant, displayMode: createEmailRequest.displayMode )); return Right(SaveComposerCacheSuccess()); diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 64e3a38e1..632785b9a 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -634,6 +634,7 @@ class ComposerController extends BaseController emailId: arguments.presentationEmail!.id!, ); _emailIdEditing = arguments.presentationEmail!.id!; + isMarkAsImportant.value = arguments.presentationEmail!.isMarkAsImportant; break; case EmailActionType.editSendingEmail: _initEmailAddress( @@ -721,6 +722,7 @@ class ComposerController extends BaseController if (!PlatformInfo.isWeb) return; screenDisplayMode.value = arguments.displayMode; + isMarkAsImportant.value = arguments.isMarkAsImportant ?? false; _initEmailAddress( presentationEmail: arguments.presentationEmail!, @@ -1316,6 +1318,7 @@ class ComposerController extends BaseController identity: identitySelected.value, attachments: uploadController.attachmentsUploaded, hasReadReceipt: hasRequestReadReceipt.value, + isMarkAsImportant: isMarkAsImportant.value, ); return savedEmailDraft.hashCode; diff --git a/lib/features/composer/presentation/model/saved_email_draft.dart b/lib/features/composer/presentation/model/saved_email_draft.dart index 536750ede..a0ed39604 100644 --- a/lib/features/composer/presentation/model/saved_email_draft.dart +++ b/lib/features/composer/presentation/model/saved_email_draft.dart @@ -13,6 +13,7 @@ class SavedEmailDraft with EquatableMixin { final List attachments; final Identity? identity; final bool hasReadReceipt; + final bool isMarkAsImportant; SavedEmailDraft({ required this.content, @@ -24,6 +25,7 @@ class SavedEmailDraft with EquatableMixin { required this.attachments, required this.identity, required this.hasReadReceipt, + this.isMarkAsImportant = false, }); factory SavedEmailDraft.empty() { @@ -51,6 +53,7 @@ class SavedEmailDraft with EquatableMixin { {3: replyToRecipients}, attachments, identity, - hasReadReceipt + hasReadReceipt, + isMarkAsImportant, ]; } \ No newline at end of file diff --git a/lib/features/email/presentation/model/composer_arguments.dart b/lib/features/email/presentation/model/composer_arguments.dart index 0840b86df..d270eb4cd 100644 --- a/lib/features/email/presentation/model/composer_arguments.dart +++ b/lib/features/email/presentation/model/composer_arguments.dart @@ -29,6 +29,7 @@ class ComposerArguments extends RouterArguments { final IdentityId? selectedIdentityId; final List? inlineImages; final bool? hasRequestReadReceipt; + final bool? isMarkAsImportant; final ScreenDisplayMode displayMode; final List? cc; final List? bcc; @@ -56,6 +57,7 @@ class ComposerArguments extends RouterArguments { this.cc, this.bcc, this.listPost, + this.isMarkAsImportant, }); factory ComposerArguments.fromSendingEmail(SendingEmail sendingEmail) => @@ -119,6 +121,7 @@ class ComposerArguments extends RouterArguments { inlineImages: composerCache.email?.allAttachments.listAttachmentsDisplayedInContent, hasRequestReadReceipt: composerCache.hasRequestReadReceipt, displayMode: composerCache.displayMode, + isMarkAsImportant: composerCache.isMarkAsImportant, ); factory ComposerArguments.replyEmail({ @@ -234,6 +237,7 @@ class ComposerArguments extends RouterArguments { selectedIdentityId, inlineImages, hasRequestReadReceipt, + isMarkAsImportant, displayMode, cc, bcc, @@ -258,6 +262,7 @@ class ComposerArguments extends RouterArguments { IdentityId? selectedIdentityId, List? inlineImages, bool? hasRequestReadReceipt, + bool? isMarkAsImportant, ScreenDisplayMode? displayMode, List? cc, List? bcc, @@ -281,6 +286,7 @@ class ComposerArguments extends RouterArguments { selectedIdentityId: selectedIdentityId ?? this.selectedIdentityId, inlineImages: inlineImages ?? this.inlineImages, hasRequestReadReceipt: hasRequestReadReceipt ?? this.hasRequestReadReceipt, + isMarkAsImportant: isMarkAsImportant ?? this.isMarkAsImportant, displayMode: displayMode ?? this.displayMode, cc: cc ?? this.cc, bcc: bcc ?? this.bcc, diff --git a/lib/features/mailbox_dashboard/data/model/composer_cache.dart b/lib/features/mailbox_dashboard/data/model/composer_cache.dart index 39cb541c4..03d330305 100644 --- a/lib/features/mailbox_dashboard/data/model/composer_cache.dart +++ b/lib/features/mailbox_dashboard/data/model/composer_cache.dart @@ -10,11 +10,13 @@ class ComposerCache with EquatableMixin { final Email? email; final bool? hasRequestReadReceipt; + final bool? isMarkAsImportant; final ScreenDisplayMode displayMode; ComposerCache({ this.email, this.hasRequestReadReceipt, + this.isMarkAsImportant, this.displayMode = ScreenDisplayMode.normal }); @@ -26,6 +28,7 @@ class ComposerCache with EquatableMixin { List get props => [ email, hasRequestReadReceipt, + isMarkAsImportant, displayMode ]; } diff --git a/test/features/composer/presentation/composer_controller_test.dart b/test/features/composer/presentation/composer_controller_test.dart index 46e0dbd9e..81019a94b 100644 --- a/test/features/composer/presentation/composer_controller_test.dart +++ b/test/features/composer/presentation/composer_controller_test.dart @@ -347,7 +347,7 @@ void main() { replyToRecipients: {replyToRecipient}, identity: identity, attachments: [attachment], - hasReadReceipt: alwaysReadReceiptEnabled + hasReadReceipt: alwaysReadReceiptEnabled, ); // act