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 417dee41d..8573cf380 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 @@ -37,6 +37,8 @@ class SaveComposerCacheOnWebInteractor { hasRequestReadReceipt: createEmailRequest.hasRequestReadReceipt, isMarkAsImportant: createEmailRequest.isMarkAsImportant, displayMode: createEmailRequest.displayMode + composerIndex: createEmailRequest.composerIndex, + composerId: createEmailRequest.composerId, )); return Right(SaveComposerCacheSuccess()); } catch (exception) { diff --git a/lib/features/composer/presentation/composer_bindings.dart b/lib/features/composer/presentation/composer_bindings.dart index 7c4aee891..ad62c8093 100644 --- a/lib/features/composer/presentation/composer_bindings.dart +++ b/lib/features/composer/presentation/composer_bindings.dart @@ -52,7 +52,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/session import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/session_storage_composer_datasoure_impl.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/composer_cache_repository_impl.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/preferences/bindings/preferences_interactors_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart'; @@ -260,7 +260,7 @@ class ComposerBindings extends BaseBindings { tag: composerId, ); Get.lazyPut( - () => RemoveComposerCacheOnWebInteractor(Get.find(tag: composerId)), + () => RemoveComposerCacheByIdOnWebInteractor(Get.find(tag: composerId)), tag: composerId, ); Get.lazyPut(() => SaveComposerCacheOnWebInteractor( @@ -313,7 +313,7 @@ class ComposerBindings extends BaseBindings { Get.find(tag: composerId), Get.find(tag: composerId), Get.find(tag: composerId), - Get.find(tag: composerId), + Get.find(tag: composerId), Get.find(tag: composerId), Get.find(tag: composerId), Get.find(tag: composerId), @@ -379,7 +379,7 @@ class ComposerBindings extends BaseBindings { Get.delete(tag: composerId); Get.delete(tag: composerId); Get.delete(tag: composerId); - Get.delete(tag: composerId); + Get.delete(tag: composerId); Get.delete(tag: composerId); Get.delete(tag: composerId); Get.delete(tag: composerId); diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index af4f19dc3..3a6a3d3d6 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -88,7 +88,7 @@ import 'package:tmail_ui_user/features/email/presentation/extensions/presentatio import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart'; import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart'; import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_state.dart'; @@ -149,7 +149,7 @@ class ComposerController extends BaseController final GetEmailContentInteractor _getEmailContentInteractor; final GetAllIdentitiesInteractor _getAllIdentitiesInteractor; final UploadController uploadController; - final RemoveComposerCacheOnWebInteractor _removeComposerCacheOnWebInteractor; + final RemoveComposerCacheByIdOnWebInteractor _removeComposerCacheByIdOnWebInteractor; final SaveComposerCacheOnWebInteractor _saveComposerCacheOnWebInteractor; final DownloadImageAsBase64Interactor _downloadImageAsBase64Interactor; final TransformHtmlEmailContentInteractor _transformHtmlEmailContentInteractor; @@ -243,7 +243,7 @@ class ComposerController extends BaseController this._getEmailContentInteractor, this._getAllIdentitiesInteractor, this.uploadController, - this._removeComposerCacheOnWebInteractor, + this._removeComposerCacheByIdOnWebInteractor, this._saveComposerCacheOnWebInteractor, this._downloadImageAsBase64Interactor, this._transformHtmlEmailContentInteractor, @@ -421,7 +421,15 @@ class ComposerController extends BaseController @override Future onUnloadBrowserListener(html.Event event) async { - await _removeComposerCacheOnWebInteractor.execute(); + final username = mailboxDashBoardController.sessionCurrent?.username; + final accountId = mailboxDashBoardController.accountId.value; + if (composerId != null && username != null && accountId != null) { + await _removeComposerCacheByIdOnWebInteractor.execute( + accountId, + username, + composerId!, + ); + } await _saveComposerCacheOnWebAction(); } @@ -504,6 +512,10 @@ class ComposerController extends BaseController final emailContent = await getContentInEditor(); final uploadUri = _getUploadUriFromSession(session, accountId); + final composerIndex = composerId != null + ? mailboxDashBoardController.composerManager.getComposerIndex(composerId!) + : null; + return CreateEmailRequest( session: session, accountId: accountId, @@ -531,6 +543,8 @@ class ComposerController extends BaseController emailSendingQueue: arguments.sendingEmail, displayMode: screenDisplayMode.value, uploadUri: uploadUri, + composerIndex: composerIndex, + composerId: composerId, ); } @@ -1363,9 +1377,12 @@ class ComposerController extends BaseController isEmailChanged.value = draftEmailHash != emptyDraftEmailHash; - if (composerArguments.value?.emailActionType == EmailActionType.compose || - composerArguments.value?.emailActionType == EmailActionType.editDraft) { + final emailActionType = composerArguments.value?.emailActionType; + if (emailActionType == EmailActionType.compose + || emailActionType == EmailActionType.editDraft) { _savedEmailDraftHash = draftEmailHash; + } else if (emailActionType == EmailActionType.reopenComposerBrowser) { + _savedEmailDraftHash = emptyDraftEmailHash; } } @@ -1468,7 +1485,7 @@ class ComposerController extends BaseController required AccountId accountId, required String downloadUrl }) { - _restoreEmailInlineImagesInteractor = getBinding(); + _restoreEmailInlineImagesInteractor = getBinding(tag: composerId); if (_restoreEmailInlineImagesInteractor == null) return; consumeState(_restoreEmailInlineImagesInteractor!.execute( htmlContent: htmlContent, diff --git a/lib/features/composer/presentation/manager/composer_manager.dart b/lib/features/composer/presentation/manager/composer_manager.dart index 52a94a7f1..08debeafe 100644 --- a/lib/features/composer/presentation/manager/composer_manager.dart +++ b/lib/features/composer/presentation/manager/composer_manager.dart @@ -30,6 +30,27 @@ class ComposerManager extends GetxController { _arrangeComposerIfNeeded(); } + void addListComposer(List listArguments) { + for (var argument in listArguments) { + final composerId = argument.composerId; + + if (composerId == null) continue; + + ComposerBindings( + composerId: composerId, + composerArguments: argument, + ).dependencies(); + + composers[composerId] = ComposerView( + key: Key(composerId), + composerId: composerId, + ); + composerIdsQueue.add(composerId); + } + + _syncQueueIfNeeded(); + } + void removeComposer(String id) { log('ComposerManager::removeComposer:Id = $id'); if (!composers.containsKey(id)) return; @@ -252,6 +273,8 @@ class ComposerManager extends GetxController { .toList(); } + int getComposerIndex(String id) => composerIdsQueue.toList().indexOf(id); + void showComposerIfHidden(String composerId) { log('ComposerManager::showComposerIfHidden:Id = $composerId'); if (!composers.containsKey(composerId)) return; diff --git a/lib/features/composer/presentation/model/create_email_request.dart b/lib/features/composer/presentation/model/create_email_request.dart index aee27e6f9..a4236833d 100644 --- a/lib/features/composer/presentation/model/create_email_request.dart +++ b/lib/features/composer/presentation/model/create_email_request.dart @@ -39,6 +39,8 @@ class CreateEmailRequest with EquatableMixin { final SendingEmail? emailSendingQueue; final ScreenDisplayMode displayMode; final Uri? uploadUri; + final int? composerIndex; + final String? composerId; CreateEmailRequest({ required this.session, @@ -67,6 +69,8 @@ class CreateEmailRequest with EquatableMixin { this.emailSendingQueue, this.displayMode = ScreenDisplayMode.normal, this.uploadUri, + this.composerIndex, + this.composerId, }); @override @@ -97,5 +101,7 @@ class CreateEmailRequest with EquatableMixin { emailSendingQueue, displayMode, uploadUri, + composerIndex, + composerId, ]; } \ 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 74736ebd5..0937c9b7d 100644 --- a/lib/features/email/presentation/model/composer_arguments.dart +++ b/lib/features/email/presentation/model/composer_arguments.dart @@ -34,6 +34,7 @@ class ComposerArguments extends RouterArguments { final List? cc; final List? bcc; final String? listPost; + final String? composerId; ComposerArguments({ this.emailActionType = EmailActionType.compose, @@ -58,6 +59,7 @@ class ComposerArguments extends RouterArguments { this.bcc, this.listPost, this.isMarkAsImportant, + this.composerId, }); factory ComposerArguments.fromSendingEmail(SendingEmail sendingEmail) => @@ -122,6 +124,7 @@ class ComposerArguments extends RouterArguments { hasRequestReadReceipt: composerCache.hasRequestReadReceipt, displayMode: composerCache.displayMode, isMarkAsImportant: composerCache.isMarkAsImportant, + composerId: composerCache.composerId, ); factory ComposerArguments.replyEmail({ @@ -242,6 +245,7 @@ class ComposerArguments extends RouterArguments { cc, bcc, listPost, + composerId, ]; ComposerArguments copyWith({ @@ -267,6 +271,7 @@ class ComposerArguments extends RouterArguments { List? cc, List? bcc, String? listPost, + String? composerId, }) { return ComposerArguments( emailActionType: emailActionType ?? this.emailActionType, @@ -291,6 +296,7 @@ class ComposerArguments extends RouterArguments { cc: cc ?? this.cc, bcc: bcc ?? this.bcc, listPost: listPost ?? this.listPost, + composerId: composerId ?? this.composerId, ); } } diff --git a/lib/features/mailbox_dashboard/data/datasource/session_storage_composer_datasource.dart b/lib/features/mailbox_dashboard/data/datasource/session_storage_composer_datasource.dart index b9c969cb1..008a47ee5 100644 --- a/lib/features/mailbox_dashboard/data/datasource/session_storage_composer_datasource.dart +++ b/lib/features/mailbox_dashboard/data/datasource/session_storage_composer_datasource.dart @@ -10,11 +10,20 @@ abstract class SessionStorageComposerDatasource { required ComposerCache composerCache, }); - Future getComposerCacheOnWeb( + Future> getComposerCacheOnWeb( AccountId accountId, UserName userName); - Future removeComposerCacheOnWeb(); + Future removeAllComposerCacheOnWeb( + AccountId accountId, + UserName userName, + ); + + Future removeComposerCacheByIdOnWeb( + AccountId accountId, + UserName userName, + String composerId, + ); Future restoreEmailInlineImages( String htmlContent, diff --git a/lib/features/mailbox_dashboard/data/datasource_impl/session_storage_composer_datasoure_impl.dart b/lib/features/mailbox_dashboard/data/datasource_impl/session_storage_composer_datasoure_impl.dart index 42721f01d..824140b42 100644 --- a/lib/features/mailbox_dashboard/data/datasource_impl/session_storage_composer_datasoure_impl.dart +++ b/lib/features/mailbox_dashboard/data/datasource_impl/session_storage_composer_datasoure_impl.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:collection/collection.dart'; import 'package:core/domain/exceptions/web_session_exception.dart'; import 'package:core/presentation/utils/html_transformer/html_transform.dart'; import 'package:core/presentation/utils/html_transformer/transform_configuration.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/user_name.dart'; -import 'package:model/model.dart'; +import 'package:model/email/email_action_type.dart'; +import 'package:model/extensions/account_id_extensions.dart'; import 'package:tmail_ui_user/features/caching/utils/cache_utils.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/session_storage_composer_datasource.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/data/model/composer_cache.dart'; @@ -20,7 +20,7 @@ class SessionStorageComposerDatasourceImpl final ExceptionThrower _exceptionThrower; @override - Future getComposerCacheOnWeb( + Future> getComposerCacheOnWeb( AccountId accountId, UserName userName ) async { @@ -30,24 +30,20 @@ class SessionStorageComposerDatasourceImpl accountId.asString, userName.value).toString(); - final result = html.window.sessionStorage.entries.firstWhereOrNull( - (entry) => entry.key == keyWithIdentity); - if (result != null) { - return ComposerCache.fromJson(jsonDecode(result.value)); + final listEntries = html.window.sessionStorage.entries.where( + (entry) => entry.key.startsWith(keyWithIdentity), + ); + + if (listEntries.isNotEmpty) { + return listEntries + .map((entry) => ComposerCache.fromJson(jsonDecode(entry.value))) + .toList(); } else { throw NotFoundInWebSessionException(); } }).catchError(_exceptionThrower.throwException); } - @override - Future removeComposerCacheOnWeb() async { - return Future.sync(() { - html.window.sessionStorage.removeWhere( - (key, value) => key.startsWith(EmailActionType.reopenComposerBrowser.name)); - }).catchError(_exceptionThrower.throwException); - } - @override Future saveComposerCacheOnWeb({ required AccountId accountId, @@ -58,7 +54,9 @@ class SessionStorageComposerDatasourceImpl final composerCacheKey = TupleKey( EmailActionType.reopenComposerBrowser.name, accountId.asString, - userName.value).toString(); + userName.value, + composerCache.composerId, + ).toString(); Map entries = { composerCacheKey: jsonEncode(composerCache.toJson()) }; @@ -78,4 +76,31 @@ class SessionStorageComposerDatasourceImpl mapCidImageDownloadUrl: mapUrlDownloadCID); }).catchError(_exceptionThrower.throwException); } + + @override + Future removeAllComposerCacheOnWeb(AccountId accountId, UserName userName) { + return Future.sync(() { + final keyWithIdentity = TupleKey( + EmailActionType.reopenComposerBrowser.name, + accountId.asString, + userName.value, + ).toString(); + + html.window.sessionStorage.removeWhere((key, value) => key.startsWith(keyWithIdentity)); + }).catchError(_exceptionThrower.throwException); + } + + @override + Future removeComposerCacheByIdOnWeb(AccountId accountId, UserName userName, String composerId) { + return Future.sync(() { + final keyWithIdentity = TupleKey( + EmailActionType.reopenComposerBrowser.name, + accountId.asString, + userName.value, + composerId, + ).toString(); + + html.window.sessionStorage.removeWhere((key, value) => key == keyWithIdentity); + }).catchError(_exceptionThrower.throwException); + } } diff --git a/lib/features/mailbox_dashboard/data/model/composer_cache.dart b/lib/features/mailbox_dashboard/data/model/composer_cache.dart index 03d330305..02516145c 100644 --- a/lib/features/mailbox_dashboard/data/model/composer_cache.dart +++ b/lib/features/mailbox_dashboard/data/model/composer_cache.dart @@ -12,12 +12,16 @@ class ComposerCache with EquatableMixin { final bool? hasRequestReadReceipt; final bool? isMarkAsImportant; final ScreenDisplayMode displayMode; + final int? composerIndex; + final String? composerId; ComposerCache({ this.email, this.hasRequestReadReceipt, this.isMarkAsImportant, this.displayMode = ScreenDisplayMode.normal + this.composerIndex, + this.composerId, }); factory ComposerCache.fromJson(Map json) => _$ComposerCacheFromJson(json); @@ -30,5 +34,7 @@ class ComposerCache with EquatableMixin { hasRequestReadReceipt, isMarkAsImportant, displayMode + composerIndex, + composerId, ]; } diff --git a/lib/features/mailbox_dashboard/data/repository/composer_cache_repository_impl.dart b/lib/features/mailbox_dashboard/data/repository/composer_cache_repository_impl.dart index c269e8d71..80c2233b9 100644 --- a/lib/features/mailbox_dashboard/data/repository/composer_cache_repository_impl.dart +++ b/lib/features/mailbox_dashboard/data/repository/composer_cache_repository_impl.dart @@ -12,7 +12,7 @@ class ComposerCacheRepositoryImpl extends ComposerCacheRepository { ComposerCacheRepositoryImpl(this.composerCacheDataSource); @override - Future getComposerCacheOnWeb( + Future> getComposerCacheOnWeb( AccountId accountId, UserName userName ) { @@ -20,8 +20,13 @@ class ComposerCacheRepositoryImpl extends ComposerCacheRepository { } @override - Future removeComposerCacheOnWeb() { - return composerCacheDataSource.removeComposerCacheOnWeb(); + Future removeAllComposerCacheOnWeb(AccountId accountId, UserName userName) { + return composerCacheDataSource.removeAllComposerCacheOnWeb(accountId, userName); + } + + @override + Future removeComposerCacheByIdOnWeb(AccountId accountId, UserName userName, String composerId) { + return composerCacheDataSource.removeComposerCacheByIdOnWeb(accountId, userName, composerId); } @override diff --git a/lib/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart b/lib/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart index 9061efcc8..929e3e7bb 100644 --- a/lib/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart +++ b/lib/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart @@ -10,11 +10,20 @@ abstract class ComposerCacheRepository { required ComposerCache composerCache, }); - Future getComposerCacheOnWeb( + Future> getComposerCacheOnWeb( AccountId accountId, UserName userName); - Future removeComposerCacheOnWeb(); + Future removeAllComposerCacheOnWeb( + AccountId accountId, + UserName userName, + ); + + Future removeComposerCacheByIdOnWeb( + AccountId accountId, + UserName userName, + String composerId, + ); Future restoreEmailInlineImages( String htmlContent, diff --git a/lib/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart b/lib/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart index c02f57359..d80a71abf 100644 --- a/lib/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart +++ b/lib/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart @@ -4,12 +4,12 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/data/model/composer_cac class GetComposerCacheSuccess extends UIState { - final ComposerCache composerCache; + final List listComposerCache; - GetComposerCacheSuccess(this.composerCache); + GetComposerCacheSuccess(this.listComposerCache); @override - List get props => [composerCache]; + List get props => [listComposerCache]; } class GetComposerCacheFailure extends FeatureFailure { diff --git a/lib/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart index a59257bc9..4a96959d7 100644 --- a/lib/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart +++ b/lib/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart @@ -13,8 +13,11 @@ class GetComposerCacheOnWebInteractor { Stream> execute(AccountId accountId, UserName userName) async* { try { - final data = await composerCacheRepository.getComposerCacheOnWeb(accountId, userName); - yield Right(GetComposerCacheSuccess(data)); + final listComposerCache = await composerCacheRepository.getComposerCacheOnWeb( + accountId, + userName, + ); + yield Right(GetComposerCacheSuccess(listComposerCache)); } catch (exception) { yield Left(GetComposerCacheFailure(exception)); } diff --git a/lib/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart new file mode 100644 index 000000000..31bc52289 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart @@ -0,0 +1,22 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:dartz/dartz.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/user_name.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_composer_cache_state.dart'; + +class RemoveAllComposerCacheOnWebInteractor { + final ComposerCacheRepository composerCacheRepository; + + RemoveAllComposerCacheOnWebInteractor(this.composerCacheRepository); + + Future> execute(AccountId accountId, UserName userName) async { + try { + composerCacheRepository.removeAllComposerCacheOnWeb(accountId, userName); + return Right(RemoveComposerCacheSuccess()); + } catch (exception) { + return Left(RemoveComposerCacheFailure(exception)); + } + } +} diff --git a/lib/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart new file mode 100644 index 000000000..08bdc06e5 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart @@ -0,0 +1,30 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:dartz/dartz.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/user_name.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_composer_cache_state.dart'; + +class RemoveComposerCacheByIdOnWebInteractor { + final ComposerCacheRepository composerCacheRepository; + + RemoveComposerCacheByIdOnWebInteractor(this.composerCacheRepository); + + Future> execute( + AccountId accountId, + UserName userName, + String composerId, + ) async { + try { + composerCacheRepository.removeComposerCacheByIdOnWeb( + accountId, + userName, + composerId, + ); + return Right(RemoveComposerCacheSuccess()); + } catch (exception) { + return Left(RemoveComposerCacheFailure(exception)); + } + } +} diff --git a/lib/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart deleted file mode 100644 index 5857b4eb4..000000000 --- a/lib/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'package:core/core.dart'; -import 'package:dartz/dartz.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_composer_cache_state.dart'; - -class RemoveComposerCacheOnWebInteractor { - final ComposerCacheRepository composerCacheRepository; - - RemoveComposerCacheOnWebInteractor(this.composerCacheRepository); - - Future> execute() async { - try { - composerCacheRepository.removeComposerCacheOnWeb(); - return Right(RemoveComposerCacheSuccess()); - } catch (exception) { - return Left(RemoveComposerCacheFailure(exception)); - } - } -} diff --git a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart index 133e466c2..b6b9e76ef 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart @@ -81,7 +81,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_com import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_mailbox_cached_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_report_state_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_last_time_dismissed_spam_reported_interactor.dart'; @@ -194,7 +195,8 @@ class MailboxDashBoardBindings extends BaseBindings { Get.find(), Get.find(), Get.find(), - Get.find(), + Get.find(), + Get.find(), Get.find(), )); Get.put(AdvancedFilterController()); @@ -308,7 +310,8 @@ class MailboxDashBoardBindings extends BaseBindings { Get.lazyPut(() => QuickSearchEmailInteractor(Get.find())); Get.lazyPut(() => MarkAsMailboxReadInteractor(Get.find())); Get.lazyPut(() => GetComposerCacheOnWebInteractor(Get.find())); - Get.lazyPut(() => RemoveComposerCacheOnWebInteractor(Get.find())); + Get.lazyPut(() => RemoveComposerCacheByIdOnWebInteractor(Get.find())); + Get.lazyPut(() => RemoveAllComposerCacheOnWebInteractor(Get.find())); Get.lazyPut(() => MarkAsEmailReadInteractor(Get.find())); Get.lazyPut(() => MarkAsStarEmailInteractor(Get.find())); Get.lazyPut(() => MarkAsMultipleEmailReadInteractor( diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 425635223..137da0c31 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -92,7 +92,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_repor import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart'; @@ -102,6 +103,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/delete_emails_in_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_preferences_setting_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/reopen_composer_cache_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/set_error_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/user_setting_popup_menu_mixin.dart'; @@ -213,7 +215,8 @@ class MailboxDashBoardController extends ReloadableController final UnsubscribeEmailInteractor _unsubscribeEmailInteractor; final RestoredDeletedMessageInteractor _restoreDeletedMessageInteractor; final GetRestoredDeletedMessageInterator _getRestoredDeletedMessageInteractor; - final RemoveComposerCacheOnWebInteractor _removeComposerCacheOnWebInteractor; + final RemoveComposerCacheByIdOnWebInteractor _removeComposerCacheByIdOnWebInteractor; + final RemoveAllComposerCacheOnWebInteractor _removeAllComposerCacheOnWebInteractor; final GetAllIdentitiesInteractor _getAllIdentitiesInteractor; GetAllVacationInteractor? _getAllVacationInteractor; @@ -304,7 +307,8 @@ class MailboxDashBoardController extends ReloadableController this._unsubscribeEmailInteractor, this._restoreDeletedMessageInteractor, this._getRestoredDeletedMessageInteractor, - this._removeComposerCacheOnWebInteractor, + this._removeAllComposerCacheOnWebInteractor, + this._removeComposerCacheByIdOnWebInteractor, this._getAllIdentitiesInteractor, ); @@ -433,8 +437,7 @@ class MailboxDashBoardController extends ReloadableController } else if (success is GetAllIdentitiesSuccess) { _handleGetAllIdentitiesSuccess(success); } else if (success is GetComposerCacheSuccess) { - removeComposerCacheOnWeb(); - openComposer(ComposerArguments.fromSessionStorageBrowser(success.composerCache)); + handleGetComposerCacheSuccess(success); } else if (success is GetIdentityCacheOnWebSuccess) { goToSettings(); } else if (success is MarkAsStarEmailSuccess) { @@ -3058,8 +3061,23 @@ class MailboxDashBoardController extends ReloadableController isRecoveringDeletedMessage.value = true; } - Future _removeComposerCacheOnWeb() async { - await _removeComposerCacheOnWebInteractor.execute(); + Future removeComposerCacheByIdOnWeb(String composerId) async { + if (accountId.value == null || sessionCurrent == null) return; + + await _removeComposerCacheByIdOnWebInteractor.execute( + accountId.value!, + sessionCurrent!.username, + composerId, + ); + } + + Future removeAllComposerCacheOnWeb() async { + if (accountId.value == null || sessionCurrent == null) return; + + await _removeAllComposerCacheOnWebInteractor.execute( + accountId.value!, + sessionCurrent!.username, + ); } bool validateSendingEmailFailedWhenNetworkIsLostOnMobile(dynamic failure) { diff --git a/lib/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart b/lib/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart index e9db36421..0bf967b5a 100644 --- a/lib/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart +++ b/lib/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart @@ -30,6 +30,20 @@ extension OpenAndCloseComposerExtension on MailboxDashBoardController { } } + void openListComposer(List listArguments) { + final newListArguments = listArguments + .map((argument) => argument.withIdentity( + identities: List.from(listIdentities), + selectedIdentityId: argument.selectedIdentityId, + )) + .toList(); + + composerManager.addListComposer(newListArguments); + if (!twakeAppManager.hasComposer) { + twakeAppManager.setHasComposer(true); + } + } + void _openComposerOnWeb(ComposerArguments composerArguments) { composerManager.addComposer(composerArguments); if (!twakeAppManager.hasComposer) { @@ -99,7 +113,9 @@ extension OpenAndCloseComposerExtension on MailboxDashBoardController { _handleResultAfterCloseComposer(result); - await removeComposerCacheOnWeb(); + if (composerId != null) { + await removeComposerCacheByIdOnWeb(composerId); + } } void _handleResultAfterCloseComposer(dynamic result) { diff --git a/lib/features/mailbox_dashboard/presentation/extensions/reopen_composer_cache_extension.dart b/lib/features/mailbox_dashboard/presentation/extensions/reopen_composer_cache_extension.dart new file mode 100644 index 000000000..c914b1aba --- /dev/null +++ b/lib/features/mailbox_dashboard/presentation/extensions/reopen_composer_cache_extension.dart @@ -0,0 +1,21 @@ + +import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart'; + +extension ReopenComposerCacheExtension on MailboxDashBoardController { + + void handleGetComposerCacheSuccess(GetComposerCacheSuccess success) { + removeAllComposerCacheOnWeb(); + + final listComposerCacheSortByIndex = success.listComposerCache + ..sort((a, b) => (a.composerIndex ?? 0).compareTo(b.composerIndex ?? 0)); + + final listArguments = listComposerCacheSortByIndex + .map((composerCache) => ComposerArguments.fromSessionStorageBrowser(composerCache)) + .toList(); + + openListComposer(listArguments); + } +} \ No newline at end of file diff --git a/test/features/composer/presentation/composer_controller_test.dart b/test/features/composer/presentation/composer_controller_test.dart index ec1ce11d6..21b3b6f1e 100644 --- a/test/features/composer/presentation/composer_controller_test.dart +++ b/test/features/composer/presentation/composer_controller_test.dart @@ -51,7 +51,7 @@ import 'package:tmail_ui_user/features/email/presentation/model/composer_argumen import 'package:tmail_ui_user/features/login/data/network/interceptors/authorization_interceptors.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_state.dart'; import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart'; @@ -156,7 +156,7 @@ class MockMailboxDashBoardController extends Mock implements MailboxDashBoardCon MockSpec(), MockSpec(), MockSpec(fallbackGenerators: fallbackGenerators), - MockSpec(), + MockSpec(), MockSpec(), MockSpec(), MockSpec(), @@ -199,7 +199,7 @@ void main() { late MockGetEmailContentInteractor mockGetEmailContentInteractor; late MockGetAllIdentitiesInteractor mockGetAllIdentitiesInteractor; late MockUploadController mockUploadController; - late MockRemoveComposerCacheOnWebInteractor mockRemoveComposerCacheOnWebInteractor; + late MockRemoveComposerCacheByIdOnWebInteractor mockRemoveComposerCacheByIdOnWebInteractor; late MockSaveComposerCacheOnWebInteractor mockSaveComposerCacheOnWebInteractor; late MockDownloadImageAsBase64Interactor mockDownloadImageAsBase64Interactor; late MockTransformHtmlEmailContentInteractor mockTransformHtmlEmailContentInteractor; @@ -267,7 +267,7 @@ void main() { mockGetEmailContentInteractor = MockGetEmailContentInteractor(); mockGetAllIdentitiesInteractor = MockGetAllIdentitiesInteractor(); mockUploadController = MockUploadController(); - mockRemoveComposerCacheOnWebInteractor = MockRemoveComposerCacheOnWebInteractor(); + mockRemoveComposerCacheByIdOnWebInteractor = MockRemoveComposerCacheByIdOnWebInteractor(); mockSaveComposerCacheOnWebInteractor = MockSaveComposerCacheOnWebInteractor(); mockDownloadImageAsBase64Interactor = MockDownloadImageAsBase64Interactor(); mockTransformHtmlEmailContentInteractor = MockTransformHtmlEmailContentInteractor(); @@ -282,7 +282,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -415,7 +415,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -476,7 +476,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -538,7 +538,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -599,7 +599,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -901,7 +901,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -973,7 +973,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -1047,7 +1047,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -1125,7 +1125,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -1490,7 +1490,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -1542,7 +1542,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -1595,7 +1595,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, @@ -1652,7 +1652,7 @@ void main() { mockGetEmailContentInteractor, mockGetAllIdentitiesInteractor, mockUploadController, - mockRemoveComposerCacheOnWebInteractor, + mockRemoveComposerCacheByIdOnWebInteractor, mockSaveComposerCacheOnWebInteractor, mockDownloadImageAsBase64Interactor, mockTransformHtmlEmailContentInteractor, diff --git a/test/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller_test.dart b/test/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller_test.dart index 6f7fd133a..a09c7c8f7 100644 --- a/test/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller_test.dart +++ b/test/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller_test.dart @@ -56,7 +56,8 @@ import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_na import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart'; @@ -173,7 +174,8 @@ const fallbackGenerators = { MockSpec(), MockSpec(), MockSpec(), - MockSpec(), + MockSpec(), + MockSpec(), MockSpec(), MockSpec(), MockSpec(), @@ -263,7 +265,8 @@ void main() { final verifyNameInteractor = MockVerifyNameInteractor(); final getAllMailboxInteractor = MockGetAllMailboxInteractor(); final refreshAllMailboxInteractor = MockRefreshAllMailboxInteractor(); - final removeComposerCacheOnWebInteractor = MockRemoveComposerCacheOnWebInteractor(); + final removeAllComposerCacheOnWebInteractor = MockRemoveAllComposerCacheOnWebInteractor(); + final removeComposerCacheByIdOnWebInteractor = MockRemoveComposerCacheByIdOnWebInteractor(); final getAllIdentitiesInteractor = MockGetAllIdentitiesInteractor(); final composerManager = MockComposerManager(); late MailboxController mailboxController; @@ -316,7 +319,8 @@ void main() { Get.put(getAuthenticatedAccountInteractor); Get.put(updateAccountCacheInteractor); Get.put(getAllIdentitiesInteractor); - Get.put(removeComposerCacheOnWebInteractor); + Get.put(removeAllComposerCacheOnWebInteractor); + Get.put(removeComposerCacheByIdOnWebInteractor); Get.put(composerManager); searchController = SearchController( @@ -351,7 +355,8 @@ void main() { unsubscribeEmailInteractor, restoreDeletedMessageInteractor, getRestoredDeletedMessageInteractor, - removeComposerCacheOnWebInteractor, + removeAllComposerCacheOnWebInteractor, + removeComposerCacheByIdOnWebInteractor, getAllIdentitiesInteractor, ); }); diff --git a/test/features/mailbox_dashboard/presentation/view/mailbox_dashboard_view_widget_test.dart b/test/features/mailbox_dashboard/presentation/view/mailbox_dashboard_view_widget_test.dart index 850aa9c88..67171beb1 100644 --- a/test/features/mailbox_dashboard/presentation/view/mailbox_dashboard_view_widget_test.dart +++ b/test/features/mailbox_dashboard/presentation/view/mailbox_dashboard_view_widget_test.dart @@ -55,7 +55,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_repor import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart'; @@ -174,7 +175,8 @@ const fallbackGenerators = { MockSpec(), MockSpec(), MockSpec(), - MockSpec(), + MockSpec(), + MockSpec(), MockSpec(), MockSpec(), MockSpec(), @@ -250,7 +252,8 @@ void main() { final verifyNameInteractor = MockVerifyNameInteractor(); final getAllMailboxInteractor = MockGetAllMailboxInteractor(); final refreshAllMailboxInteractor = MockRefreshAllMailboxInteractor(); - final removeComposerCacheOnWebInteractor = MockRemoveComposerCacheOnWebInteractor(); + final removeAllComposerCacheOnWebInteractor = MockRemoveAllComposerCacheOnWebInteractor(); + final removeComposerCacheByIdOnWebInteractor = MockRemoveComposerCacheByIdOnWebInteractor(); final getAllIdentitiesInteractor = MockGetAllIdentitiesInteractor(); final composerManager = MockComposerManager(); @@ -314,7 +317,8 @@ void main() { Get.put(getAuthenticatedAccountInteractor); Get.put(updateAccountCacheInteractor); Get.put(getAllIdentitiesInteractor); - Get.put(removeComposerCacheOnWebInteractor); + Get.put(removeAllComposerCacheOnWebInteractor); + Get.put(removeComposerCacheByIdOnWebInteractor); Get.put(composerManager); when(emailReceiveManager.pendingSharedFileInfo).thenAnswer((_) => BehaviorSubject.seeded([])); @@ -350,7 +354,8 @@ void main() { unsubscribeEmailInteractor, restoreDeletedMessageInteractor, getRestoredDeletedMessageInteractor, - removeComposerCacheOnWebInteractor, + removeAllComposerCacheOnWebInteractor, + removeComposerCacheByIdOnWebInteractor, getAllIdentitiesInteractor, ); Get.put(mailboxDashboardController); diff --git a/test/features/search/verify_before_time_in_search_email_filter_test.dart b/test/features/search/verify_before_time_in_search_email_filter_test.dart index 2e2ad415f..1d82e4a3d 100644 --- a/test/features/search/verify_before_time_in_search_email_filter_test.dart +++ b/test/features/search/verify_before_time_in_search_email_filter_test.dart @@ -42,7 +42,8 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_r import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart'; @@ -152,7 +153,8 @@ const fallbackGenerators = { MockSpec(), MockSpec(), MockSpec(), - MockSpec(), + MockSpec(), + MockSpec(), MockSpec(), MockSpec(fallbackGenerators: fallbackGenerators), ]) @@ -209,7 +211,8 @@ void main() { late MockUnsubscribeEmailInteractor unsubscribeEmailInteractor; late MockRestoredDeletedMessageInteractor restoreDeletedMessageInteractor; late MockGetRestoredDeletedMessageInterator getRestoredDeletedMessageInteractor; - late MockRemoveComposerCacheOnWebInteractor removeComposerCacheOnWebInteractor; + late MockRemoveAllComposerCacheOnWebInteractor removeAllComposerCacheOnWebInteractor; + late MockRemoveComposerCacheByIdOnWebInteractor removeComposerCacheByIdOnWebInteractor; late MockGetAllIdentitiesInteractor getAllIdentitiesInteractor; // Declaration base controller @@ -301,7 +304,8 @@ void main() { unsubscribeEmailInteractor = MockUnsubscribeEmailInteractor(); restoreDeletedMessageInteractor = MockRestoredDeletedMessageInteractor(); getRestoredDeletedMessageInteractor = MockGetRestoredDeletedMessageInterator(); - removeComposerCacheOnWebInteractor = MockRemoveComposerCacheOnWebInteractor(); + removeAllComposerCacheOnWebInteractor = MockRemoveAllComposerCacheOnWebInteractor(); + removeComposerCacheByIdOnWebInteractor = MockRemoveComposerCacheByIdOnWebInteractor(); getAllIdentitiesInteractor = MockGetAllIdentitiesInteractor(); searchController = SearchController( @@ -346,7 +350,8 @@ void main() { unsubscribeEmailInteractor, restoreDeletedMessageInteractor, getRestoredDeletedMessageInteractor, - removeComposerCacheOnWebInteractor, + removeAllComposerCacheOnWebInteractor, + removeComposerCacheByIdOnWebInteractor, getAllIdentitiesInteractor, );