From f7ba168d7a8ff1ca10a85e0bffa51cea9a121179 Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 7 Nov 2023 16:15:22 +0700 Subject: [PATCH] TF-2302 Fix rename folder (cherry picked from commit 606ae303f92e711ffd0dbd8975a19c8fa02eb022) --- .../base/base_mailbox_controller.dart | 13 ++++-- ...ception.dart => set_method_exception.dart} | 4 +- .../email/data/network/email_api.dart | 8 ++-- .../data/datasource/mailbox_datasource.dart | 2 +- .../mailbox_cache_datasource_impl.dart | 2 +- .../mailbox_datasource_impl.dart | 4 +- .../mailbox/data/network/mailbox_api.dart | 44 ++++++++++++------- .../repository/mailbox_repository_impl.dart | 41 +++++++++-------- .../domain/constants/mailbox_constants.dart | 19 ++++++++ .../domain/repository/mailbox_repository.dart | 2 +- .../refresh_all_mailbox_interactor.dart | 12 ++++- .../usecases/rename_mailbox_interactor.dart | 2 +- .../presentation/mailbox_controller.dart | 18 ++++++-- .../mailbox_dashboard_controller.dart | 8 ++-- .../search_mailbox_controller.dart | 16 +++++-- 15 files changed, 133 insertions(+), 62 deletions(-) rename lib/features/composer/domain/exceptions/{set_email_method_exception.dart => set_method_exception.dart} (62%) create mode 100644 lib/features/mailbox/domain/constants/mailbox_constants.dart diff --git a/lib/features/base/base_mailbox_controller.dart b/lib/features/base/base_mailbox_controller.dart index d03c3e92e..8a195f1c1 100644 --- a/lib/features/base/base_mailbox_controller.dart +++ b/lib/features/base/base_mailbox_controller.dart @@ -11,6 +11,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; @@ -530,13 +531,17 @@ abstract class BaseMailboxController extends BaseController { void refreshMailboxChanges( Session session, AccountId accountId, - jmap.State currentMailboxState + jmap.State currentMailboxState, + {Properties? properties} ) { if (refreshAllMailboxInteractor != null) { log('BaseMailboxController::refreshMailboxChanges(): currentMailboxState: $currentMailboxState'); - final newMailboxState = currentMailboxState; - log('BaseMailboxController::refreshMailboxChanges(): newMailboxState: $newMailboxState'); - consumeState(refreshAllMailboxInteractor!.execute(session, accountId, newMailboxState)); + consumeState(refreshAllMailboxInteractor!.execute( + session, + accountId, + currentMailboxState, + properties: properties + )); } } diff --git a/lib/features/composer/domain/exceptions/set_email_method_exception.dart b/lib/features/composer/domain/exceptions/set_method_exception.dart similarity index 62% rename from lib/features/composer/domain/exceptions/set_email_method_exception.dart rename to lib/features/composer/domain/exceptions/set_method_exception.dart index 4886b79fb..174a75c7a 100644 --- a/lib/features/composer/domain/exceptions/set_email_method_exception.dart +++ b/lib/features/composer/domain/exceptions/set_method_exception.dart @@ -2,9 +2,9 @@ import 'package:jmap_dart_client/jmap/core/error/set_error.dart'; import 'package:jmap_dart_client/jmap/core/id.dart'; -class SetEmailMethodException implements Exception { +class SetMethodException implements Exception { final Map mapErrors; - SetEmailMethodException(this.mapErrors); + SetMethodException(this.mapErrors); } \ No newline at end of file diff --git a/lib/features/email/data/network/email_api.dart b/lib/features/email/data/network/email_api.dart index 4150f73cf..efdbd6546 100644 --- a/lib/features/email/data/network/email_api.dart +++ b/lib/features/email/data/network/email_api.dart @@ -49,7 +49,7 @@ import 'package:model/extensions/session_extension.dart'; import 'package:model/oidc/token.dart'; import 'package:path_provider/path_provider.dart'; import 'package:tmail_ui_user/features/base/mixin/handle_error_mixin.dart'; -import 'package:tmail_ui_user/features/composer/domain/exceptions/set_email_method_exception.dart'; +import 'package:tmail_ui_user/features/composer/domain/exceptions/set_method_exception.dart'; import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart'; import 'package:tmail_ui_user/features/email/domain/exceptions/email_exceptions.dart'; import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart'; @@ -214,7 +214,7 @@ class EmailAPI with HandleSetErrorMixin { if (emailCreated != null && mapErrors.isEmpty) { return true; } else { - throw SetEmailMethodException(mapErrors); + throw SetMethodException(mapErrors); } } @@ -488,7 +488,7 @@ class EmailAPI with HandleSetErrorMixin { if (emailCreated != null && mapErrors.isEmpty) { return emailCreated; } else { - throw SetEmailMethodException(mapErrors); + throw SetMethodException(mapErrors); } } @@ -555,7 +555,7 @@ class EmailAPI with HandleSetErrorMixin { if (emailUpdated != null && isEmailDeleted == true && mapErrors.isEmpty) { return emailUpdated; } else { - throw SetEmailMethodException(mapErrors); + throw SetMethodException(mapErrors); } } diff --git a/lib/features/mailbox/data/datasource/mailbox_datasource.dart b/lib/features/mailbox/data/datasource/mailbox_datasource.dart index e8a3e31b0..40325b1b4 100644 --- a/lib/features/mailbox/data/datasource/mailbox_datasource.dart +++ b/lib/features/mailbox/data/datasource/mailbox_datasource.dart @@ -25,7 +25,7 @@ abstract class MailboxDataSource { Future> getAllMailboxCache(AccountId accountId, UserName userName); - Future getChanges(Session session, AccountId accountId, State sinceState); + Future getChanges(Session session, AccountId accountId, State sinceState, {Properties? properties}); Future update(AccountId accountId, UserName userName, {List? updated, List? created, List? destroyed}); diff --git a/lib/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart b/lib/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart index 6a99704c6..3ed368bd5 100644 --- a/lib/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart +++ b/lib/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart @@ -36,7 +36,7 @@ class MailboxCacheDataSourceImpl extends MailboxDataSource { } @override - Future getChanges(Session session, AccountId accountId, State sinceState) { + Future getChanges(Session session, AccountId accountId, State sinceState, {Properties? properties}) { throw UnimplementedError(); } diff --git a/lib/features/mailbox/data/datasource_impl/mailbox_datasource_impl.dart b/lib/features/mailbox/data/datasource_impl/mailbox_datasource_impl.dart index 5027c8c12..7d88da370 100644 --- a/lib/features/mailbox/data/datasource_impl/mailbox_datasource_impl.dart +++ b/lib/features/mailbox/data/datasource_impl/mailbox_datasource_impl.dart @@ -40,9 +40,9 @@ class MailboxDataSourceImpl extends MailboxDataSource { } @override - Future getChanges(Session session, AccountId accountId, State sinceState) { + Future getChanges(Session session, AccountId accountId, State sinceState, {Properties? properties}) { return Future.sync(() async { - return await mailboxAPI.getChanges(session, accountId, sinceState); + return await mailboxAPI.getChanges(session, accountId, sinceState, properties: properties); }).catchError(_exceptionThrower.throwException); } diff --git a/lib/features/mailbox/data/network/mailbox_api.dart b/lib/features/mailbox/data/network/mailbox_api.dart index c50f7cf0f..ec79f7eca 100644 --- a/lib/features/mailbox/data/network/mailbox_api.dart +++ b/lib/features/mailbox/data/network/mailbox_api.dart @@ -26,6 +26,7 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/set/set_mailbox_response.dart import 'package:model/error_type_handler/set_method_error_handler_mixin.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/base/mixin/handle_error_mixin.dart'; +import 'package:tmail_ui_user/features/composer/domain/exceptions/set_method_exception.dart'; import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_change_response.dart'; import 'package:tmail_ui_user/features/mailbox/domain/exceptions/set_mailbox_method_exception.dart'; import 'package:tmail_ui_user/features/mailbox/domain/extensions/list_mailbox_id_extension.dart'; @@ -54,6 +55,8 @@ class MailboxAPI with HandleSetErrorMixin { final getMailboxCreated = GetMailboxMethod(accountId); + if (properties != null) getMailboxCreated.addProperties(properties); + final queryInvocation = jmapRequestBuilder.invocation(getMailboxCreated); final capabilities = getMailboxCreated.requiredCapabilities @@ -71,7 +74,7 @@ class MailboxAPI with HandleSetErrorMixin { return MailboxResponse(mailboxes: resultCreated?.list, state: resultCreated?.state); } - Future getChanges(Session session, AccountId accountId, State sinceState) async { + Future getChanges(Session session, AccountId accountId, State sinceState, {Properties? properties}) async { final processingInvocation = ProcessingInvocation(); final jmapRequestBuilder = JmapRequestBuilder(httpClient, processingInvocation); @@ -83,10 +86,17 @@ class MailboxAPI with HandleSetErrorMixin { final getMailboxUpdated = GetMailboxMethod(accountId) ..addReferenceIds(processingInvocation.createResultReference( changesMailboxInvocation.methodCallId, - ReferencePath.updatedPath)) - ..addReferenceProperties(processingInvocation.createResultReference( + ReferencePath.updatedPath)); + + if (properties == null) { + getMailboxUpdated + .addReferenceProperties(processingInvocation.createResultReference( changesMailboxInvocation.methodCallId, - ReferencePath.updatedPropertiesPath)); + ReferencePath.updatedPropertiesPath + )); + } else { + getMailboxUpdated.addProperties(properties); + } final getMailboxCreated = GetMailboxMethod(accountId) ..addReferenceIds(processingInvocation.createResultReference( @@ -117,7 +127,7 @@ class MailboxAPI with HandleSetErrorMixin { GetMailboxResponse.deserialize); final listMailboxIdDestroyed = resultChanges?.destroyed.map((id) => MailboxId(id)).toList() ?? []; - + log('MailboxAPI::getChanges:resultUpdated: ${resultUpdated?.toJson().toString()}'); return MailboxChangeResponse( updated: resultUpdated?.list, created: resultCreated?.list, @@ -261,19 +271,23 @@ class MailboxAPI with HandleSetErrorMixin { .toCapabilitiesSupportTeamMailboxes(session, accountId); final response = await (requestBuilder - ..usings(capabilities)) - .build() - .execute(); + ..usings(capabilities)) + .build() + .execute(); final setMailboxResponse = response.parse( - setMailboxInvocation.methodCallId, - SetMailboxResponse.deserialize); + setMailboxInvocation.methodCallId, + SetMailboxResponse.deserialize); - return Future.sync(() async { - return setMailboxResponse?.updated?.isNotEmpty == true; - }).catchError((error) { - throw error; - }); + if (setMailboxResponse?.updated?.containsKey(request.mailboxId.id) == true) { + return true; + } else { + final listEntriesErrors = handleSetResponse([ + setMailboxResponse, + ]); + final mapErrors = Map.fromEntries(listEntriesErrors); + throw SetMethodException(mapErrors); + } } Future moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request) async { diff --git a/lib/features/mailbox/data/repository/mailbox_repository_impl.dart b/lib/features/mailbox/data/repository/mailbox_repository_impl.dart index 6a61a01d8..62f249aa5 100644 --- a/lib/features/mailbox/data/repository/mailbox_repository_impl.dart +++ b/lib/features/mailbox/data/repository/mailbox_repository_impl.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:core/data/model/source_type/data_source_type.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; +import 'package:core/utils/app_logger.dart'; import 'package:dartz/dartz.dart' as dartz; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/error/set_error.dart'; @@ -52,13 +53,13 @@ class MailboxRepositoryImpl extends MailboxRepository { State? sinceState = localMailboxResponse.state!; while(hasMoreChanges && sinceState != null) { - final changesResponse = await mapDataSource[DataSourceType.network]!.getChanges(session, accountId, sinceState); + final changesResponse = await mapDataSource[DataSourceType.network]!.getChanges(session, accountId, sinceState, properties: properties); hasMoreChanges = changesResponse.hasMoreChanges; sinceState = changesResponse.newStateChanges; final newMailboxUpdated = await _combineMailboxCache( - mailboxUpdated: changesResponse.updated, + mailboxUpdatedList: changesResponse.updated, updatedProperties: changesResponse.updatedProperties, mailboxCacheList: localMailboxResponse.mailboxes!); @@ -94,44 +95,46 @@ class MailboxRepositoryImpl extends MailboxRepository { } Future?> _combineMailboxCache({ - List? mailboxUpdated, + List? mailboxUpdatedList, Properties? updatedProperties, List? mailboxCacheList }) async { - if (mailboxUpdated != null && mailboxUpdated.isNotEmpty) { - final newMailboxUpdated = mailboxUpdated.map((mailboxUpdated) { - if (updatedProperties == null) { - return mailboxUpdated; + if (mailboxUpdatedList == null || mailboxUpdatedList.isEmpty) { + return null; + } + log('MailboxRepositoryImpl::_combineMailboxCache:mailboxUpdatedList: $mailboxUpdatedList'); + if (updatedProperties == null) { + log('MailboxRepositoryImpl::_combineMailboxCache:updatedProperties is null'); + return mailboxUpdatedList; + } else { + final newMailboxUpdatedList = mailboxUpdatedList.map((mailboxUpdated) { + final mailboxOld = mailboxCacheList?.findMailbox(mailboxUpdated.id!); + if (mailboxOld != null) { + return mailboxOld.combineMailbox(mailboxUpdated, updatedProperties); } else { - final mailboxOld = mailboxCacheList?.findMailbox(mailboxUpdated.id!); - if (mailboxOld != null) { - return mailboxOld.combineMailbox(mailboxUpdated, updatedProperties); - } else { - return mailboxUpdated; - } + return mailboxUpdated; } }).toList(); - - return newMailboxUpdated; + log('MailboxRepositoryImpl::_combineMailboxCache:newMailboxUpdatedList: ${newMailboxUpdatedList.length}'); + return newMailboxUpdatedList; } - return mailboxUpdated; } @override - Stream refresh(Session session, AccountId accountId, State currentState) async* { + Stream refresh(Session session, AccountId accountId, State currentState, {Properties? properties}) async* { final localMailboxList = await mapDataSource[DataSourceType.local]!.getAllMailboxCache(accountId, session.username); bool hasMoreChanges = true; State? sinceState = currentState; while(hasMoreChanges && sinceState != null) { - final changesResponse = await mapDataSource[DataSourceType.network]!.getChanges(session, accountId, sinceState); + final changesResponse = await mapDataSource[DataSourceType.network]!.getChanges(session, accountId, sinceState, properties: properties); hasMoreChanges = changesResponse.hasMoreChanges; sinceState = changesResponse.newStateChanges; final newMailboxUpdated = await _combineMailboxCache( - mailboxUpdated: changesResponse.updated, + mailboxUpdatedList: changesResponse.updated, updatedProperties: changesResponse.updatedProperties, mailboxCacheList: localMailboxList); diff --git a/lib/features/mailbox/domain/constants/mailbox_constants.dart b/lib/features/mailbox/domain/constants/mailbox_constants.dart new file mode 100644 index 000000000..80eb285e0 --- /dev/null +++ b/lib/features/mailbox/domain/constants/mailbox_constants.dart @@ -0,0 +1,19 @@ +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; +import 'package:model/mailbox/mailbox_property.dart'; + +class MailboxConstants { + static final propertiesDefault = Properties({ + MailboxProperty.id, + MailboxProperty.name, + MailboxProperty.parentId, + MailboxProperty.role, + MailboxProperty.sortOrder, + MailboxProperty.isSubscribed, + MailboxProperty.totalEmails, + MailboxProperty.totalThreads, + MailboxProperty.unreadEmails, + MailboxProperty.unreadThreads, + MailboxProperty.myRights, + MailboxProperty.namespace + }); +} \ No newline at end of file diff --git a/lib/features/mailbox/domain/repository/mailbox_repository.dart b/lib/features/mailbox/domain/repository/mailbox_repository.dart index 392a60622..e9aa3363e 100644 --- a/lib/features/mailbox/domain/repository/mailbox_repository.dart +++ b/lib/features/mailbox/domain/repository/mailbox_repository.dart @@ -21,7 +21,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_multiple_m abstract class MailboxRepository { Stream getAllMailbox(Session session, AccountId accountId, {Properties? properties}); - Stream refresh(Session session, AccountId accountId, State currentState); + Stream refresh(Session session, AccountId accountId, State currentState, {Properties? properties}); Future createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest newMailboxRequest); diff --git a/lib/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart index f8d9cb916..d8985ae9c 100644 --- a/lib/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart @@ -1,7 +1,9 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; +import 'package:core/utils/app_logger.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap_state; import 'package:model/extensions/mailbox_extension.dart'; @@ -15,11 +17,17 @@ class RefreshAllMailboxInteractor { RefreshAllMailboxInteractor(this._mailboxRepository); - Stream> execute(Session session, AccountId accountId, jmap_state.State currentState) async* { + Stream> execute( + Session session, + AccountId accountId, + jmap_state.State currentState, + {Properties? properties} + ) async* { try { + log('RefreshAllMailboxInteractor::execute:properties: $properties'); yield Right(RefreshChangesAllMailboxLoading()); yield* _mailboxRepository - .refresh(session, accountId, currentState) + .refresh(session, accountId, currentState, properties: properties) .map(_toGetMailboxState); } catch (e) { yield Left(RefreshChangesAllMailboxFailure(e)); diff --git a/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart index e6cd5f57f..26a989448 100644 --- a/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart @@ -16,7 +16,7 @@ class RenameMailboxInteractor { yield Right(LoadingRenameMailbox()); final currentMailboxState = await _mailboxRepository.getMailboxState(session, accountId); - + log('RenameMailboxInteractor::execute:currentMailboxState: $currentMailboxState'); final result = await _mailboxRepository.renameMailbox(session, accountId, request); if (result) { yield Right(RenameMailboxSuccess(currentMailboxState: currentMailboxState)); diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index cb8d896b6..6585af646 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -9,6 +9,7 @@ import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/error/method/error_method_response.dart'; import 'package:jmap_dart_client/jmap/core/id.dart'; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; @@ -27,6 +28,7 @@ import 'package:tmail_ui_user/features/email/domain/state/delete_multiple_emails import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart'; import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart'; import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart'; +import 'package:tmail_ui_user/features/mailbox/domain/constants/mailbox_constants.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_action_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_state.dart'; @@ -170,7 +172,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM } else if (success is DeleteMultipleMailboxHasSomeSuccess) { _deleteMultipleMailboxSuccess(success.listMailboxIdDeleted, success.currentMailboxState); } else if (success is RenameMailboxSuccess) { - _refreshMailboxChanges(currentMailboxState: success.currentMailboxState); + _refreshMailboxChanges( + currentMailboxState: success.currentMailboxState, + properties: MailboxConstants.propertiesDefault + ); } else if (success is MoveMailboxSuccess) { _moveMailboxSuccess(success); } else if (success is SubscribeMailboxSuccess) { @@ -315,14 +320,19 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM } } - void _refreshMailboxChanges({jmap.State? currentMailboxState}) { + void _refreshMailboxChanges({jmap.State? currentMailboxState, Properties? properties}) { log('MailboxController::_refreshMailboxChanges(): currentMailboxState: $currentMailboxState'); final newMailboxState = currentMailboxState ?? this.currentMailboxState; log('MailboxController::_refreshMailboxChanges(): newMailboxState: $newMailboxState'); final accountId = mailboxDashBoardController.accountId.value; final session = mailboxDashBoardController.sessionCurrent; if (accountId != null && session != null && newMailboxState != null) { - refreshMailboxChanges(session, accountId, newMailboxState); + refreshMailboxChanges( + session, + accountId, + newMailboxState, + properties: properties + ); } else { _newFolderId = null; } @@ -1058,6 +1068,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM void _handleGetAllMailboxSuccess(GetAllMailboxSuccess success) async { currentMailboxState = success.currentMailboxState; + log('MailboxController::_handleGetAllMailboxSuccess:currentMailboxState: $currentMailboxState'); final listMailboxDisplayed = success.mailboxList.listSubscribedMailboxesAndDefaultMailboxes; await buildTree(listMailboxDisplayed); if (currentContext != null) { @@ -1067,6 +1078,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM void _handleRefreshChangesAllMailboxSuccess(RefreshChangesAllMailboxSuccess success) async { currentMailboxState = success.currentMailboxState; + log('MailboxController::_handleRefreshChangesAllMailboxSuccess:currentMailboxState: $currentMailboxState'); final listMailboxDisplayed = success.mailboxList.listSubscribedMailboxesAndDefaultMailboxes; await refreshTree(listMailboxDisplayed); if (currentContext != null) { 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 f264dcd63..1f12c15cf 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -24,7 +24,7 @@ import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'package:rxdart/transformers.dart'; import 'package:tmail_ui_user/features/base/action/ui_action.dart'; import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart'; -import 'package:tmail_ui_user/features/composer/domain/exceptions/set_email_method_exception.dart'; +import 'package:tmail_ui_user/features/composer/domain/exceptions/set_method_exception.dart'; import 'package:tmail_ui_user/features/composer/domain/extensions/email_request_extension.dart'; import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart'; import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart'; @@ -1757,7 +1757,7 @@ class MailboxDashBoardController extends ReloadableController { } final exception = failure.exception; logError('MailboxDashBoardController::_handleSendEmailFailure():exception: $exception'); - if (exception is SetEmailMethodException) { + if (exception is SetMethodException) { final listErrors = exception.mapErrors.values.toList(); final toastSuccess = _handleSetErrors(listErrors); if (!toastSuccess) { @@ -1801,7 +1801,7 @@ class MailboxDashBoardController extends ReloadableController { } final exception = failure.exception; logError('MailboxDashBoardController::_handleSaveEmailAsDraftsFailure():exception: $exception'); - if (exception is SetEmailMethodException) { + if (exception is SetMethodException) { final listErrors = exception.mapErrors.values.toList(); final toastSuccess = _handleSetErrors(listErrors); if (!toastSuccess) { @@ -1822,7 +1822,7 @@ class MailboxDashBoardController extends ReloadableController { } final exception = failure.exception; logError('MailboxDashBoardController::_handleUpdateEmailAsDraftsFailure():exception: $exception'); - if (exception is SetEmailMethodException) { + if (exception is SetMethodException) { final listErrors = exception.mapErrors.values.toList(); final toastSuccess = _handleSetErrors(listErrors); if (!toastSuccess) { diff --git a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart index f3f272349..11a0ef6ba 100644 --- a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart +++ b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart @@ -15,6 +15,7 @@ import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/error/method/error_method_response.dart'; import 'package:jmap_dart_client/jmap/core/id.dart'; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; @@ -24,6 +25,7 @@ import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:tmail_ui_user/features/base/base_mailbox_controller.dart'; import 'package:tmail_ui_user/features/base/mixin/mailbox_action_handler_mixin.dart'; import 'package:tmail_ui_user/features/email/domain/model/move_action.dart'; +import 'package:tmail_ui_user/features/mailbox/domain/constants/mailbox_constants.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_action_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_state.dart'; @@ -153,7 +155,10 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa } else if (success is MarkAsMailboxReadHasSomeEmailFailure) { _refreshMailboxChanges(mailboxState: success.currentMailboxState); } else if (success is RenameMailboxSuccess) { - _refreshMailboxChanges(mailboxState: success.currentMailboxState); + _refreshMailboxChanges( + mailboxState: success.currentMailboxState, + properties: MailboxConstants.propertiesDefault + ); } else if (success is MoveMailboxSuccess) { _moveMailboxSuccess(success); } else if (success is DeleteMultipleMailboxAllSuccess) { @@ -192,13 +197,18 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa } } - void _refreshMailboxChanges({jmap.State? mailboxState}) { + void _refreshMailboxChanges({jmap.State? mailboxState, Properties? properties}) { dashboardController.dispatchMailboxUIAction(RefreshChangeMailboxAction(null)); final newMailboxState = mailboxState ?? currentMailboxState; final accountId = dashboardController.accountId.value; final session = dashboardController.sessionCurrent; if (session != null && accountId != null && newMailboxState != null) { - refreshMailboxChanges(session, accountId, newMailboxState); + refreshMailboxChanges( + session, + accountId, + newMailboxState, + properties: properties + ); } }