diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index f2020cbd3..5588a1d88 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -304,7 +304,7 @@ class ComposerController extends BaseController { if (userProfile != null) { final draftEmail = await _generateEmail( currentContext!, - mailboxDashBoardController.mapDefaultMailboxId, + mailboxDashBoardController.mapDefaultMailboxIdByRole, userProfile, ); _saveComposerCacheOnWebInteractor.execute(draftEmail); @@ -688,14 +688,14 @@ class ComposerController extends BaseController { void _handleSendMessages(BuildContext context) async { final arguments = composerArguments.value; final session = mailboxDashBoardController.sessionCurrent; - final mapDefaultMailboxId = mailboxDashBoardController.mapDefaultMailboxId; + final mapDefaultMailboxIdByRole = mailboxDashBoardController.mapDefaultMailboxIdByRole; final userProfile = mailboxDashBoardController.userProfile.value; - if (arguments != null && session != null && mapDefaultMailboxId.isNotEmpty + if (arguments != null && session != null && mapDefaultMailboxIdByRole.isNotEmpty && userProfile != null) { - final email = await _generateEmail(context, mapDefaultMailboxId, userProfile); + final email = await _generateEmail(context, mapDefaultMailboxIdByRole, userProfile); final accountId = session.accounts.keys.first; - final sentMailboxId = mapDefaultMailboxId[PresentationMailbox.roleSent]; + final sentMailboxId = mapDefaultMailboxIdByRole[PresentationMailbox.roleSent]; final submissionCreateId = Id(_uuid.v1()); mailboxDashBoardController.consumeState(_sendEmailInteractor.execute( @@ -896,18 +896,18 @@ class ComposerController extends BaseController { clearFocusEditor(context); final arguments = composerArguments.value; - final mapDefaultMailboxId = mailboxDashBoardController.mapDefaultMailboxId; + final mapDefaultMailboxIdByRole = mailboxDashBoardController.mapDefaultMailboxIdByRole; final userProfile = mailboxDashBoardController.userProfile.value; final session = mailboxDashBoardController.sessionCurrent; - if (arguments != null && mapDefaultMailboxId.isNotEmpty && userProfile != null && session != null) { + if (arguments != null && mapDefaultMailboxIdByRole.isNotEmpty && userProfile != null && session != null) { log('ComposerController::saveEmailAsDrafts(): saveEmailAsDrafts START'); final isChanged = await _isEmailChanged(context, arguments); log('ComposerController::saveEmailAsDrafts(): saveEmailAsDrafts isChanged: $isChanged'); if (isChanged) { final newEmail = await _generateEmail( context, - mapDefaultMailboxId, + mapDefaultMailboxIdByRole, userProfile, asDrafts: true); final accountId = session.accounts.keys.first; diff --git a/lib/features/email/presentation/email_controller.dart b/lib/features/email/presentation/email_controller.dart index 7d7b5d6e1..932dc473c 100644 --- a/lib/features/email/presentation/email_controller.dart +++ b/lib/features/email/presentation/email_controller.dart @@ -240,7 +240,7 @@ class EmailController extends BaseController with AppLoaderMixin { PresentationMailbox? getMailboxContain(PresentationEmail email) { return mailboxDashBoardController.searchController.isSearchEmailRunning - ? email.findMailboxContain(mailboxDashBoardController.mapMailbox) + ? email.findMailboxContain(mailboxDashBoardController.mapMailboxById) : mailboxDashBoardController.selectedMailbox.value; } diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index ce5058e53..05025b63b 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -289,7 +289,7 @@ class MailboxController extends BaseMailboxController { } void _setUpMapMailboxIdDefault(List allMailbox, MailboxTree defaultTree, MailboxTree folderTree) { - final mapDefaultMailboxId = { + final mapDefaultMailboxIdByRole = { for (var mailboxNode in defaultTree.root.childrenItems ?? List.empty()) mailboxNode.item.role!: mailboxNode.item.id @@ -301,14 +301,14 @@ class MailboxController extends BaseMailboxController { mailboxNode.item.role!: mailboxNode.item }; - final mapMailbox = { + final mapMailboxById = { for (var presentationMailbox in allMailbox) presentationMailbox.id: presentationMailbox }; - mailboxDashBoardController.setMapDefaultMailboxId(mapDefaultMailboxId); + mailboxDashBoardController.setMapDefaultMailboxIdByRole(mapDefaultMailboxIdByRole); - mailboxDashBoardController.setMapMailbox(mapMailbox); + mailboxDashBoardController.setMapMailboxById(mapMailboxById); var mailboxCurrent = mailboxDashBoardController.selectedMailbox.value; @@ -318,8 +318,8 @@ class MailboxController extends BaseMailboxController { ? mapDefaultMailbox[mailboxCurrent.role] : mailboxCurrent); } else { - mailboxDashBoardController.setNewFirstSelectedMailbox(mapMailbox.containsKey(mailboxCurrent.id) - ? mapMailbox[mailboxCurrent.id] + mailboxDashBoardController.setNewFirstSelectedMailbox(mapMailboxById.containsKey(mailboxCurrent.id) + ? mapMailboxById[mailboxCurrent.id] : mailboxCurrent); } } else { 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 a411b060a..5022ceb86 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -119,8 +119,8 @@ class MailboxDashBoardController extends ReloadableController { final viewStateMarkAsReadMailbox = Rx>(Right(UIState.idle)); final vacationResponse = Rxn(); Session? sessionCurrent; - Map mapDefaultMailboxId = {}; - Map mapMailbox = {}; + Map mapDefaultMailboxIdByRole = {}; + Map mapMailboxById = {}; RouterArguments? routerArguments; late StreamSubscription _connectivityStreamSubscription; late StreamSubscription _emailReceiveManagerStreamSubscription; @@ -370,15 +370,15 @@ class MailboxDashBoardController extends ReloadableController { } MailboxId? getMailboxIdByRole(Role role) { - return mapDefaultMailboxId[role]; + return mapDefaultMailboxIdByRole[role]; } - void setMapDefaultMailboxId(Map newMapMailboxId) { - mapDefaultMailboxId = newMapMailboxId; + void setMapDefaultMailboxIdByRole(Map newMapMailboxId) { + mapDefaultMailboxIdByRole = newMapMailboxId; } - void setMapMailbox(Map newMapMailbox) { - mapMailbox = newMapMailbox; + void setMapMailboxById(Map newMapMailboxById) { + mapMailboxById = newMapMailboxById; } void setSelectedMailbox(PresentationMailbox? newPresentationMailbox) { @@ -811,7 +811,7 @@ class MailboxDashBoardController extends ReloadableController { void _emptyTrashFolderAction({Function? onCancelSelectionEmail}) { onCancelSelectionEmail?.call(); - final trashMailboxId = mapDefaultMailboxId[PresentationMailbox.roleTrash]; + final trashMailboxId = mapDefaultMailboxIdByRole[PresentationMailbox.roleTrash]; if (accountId.value != null && trashMailboxId != null) { consumeState(_emptyTrashFolderInteractor.execute(accountId.value!, trashMailboxId)); } diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index 4c986d1bf..27b368a0c 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -123,7 +123,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { child: TopBarThreadSelection( context, controller.listEmailSelected, - controller.mapMailbox, + controller.mapMailboxById, onCancelSelection: () => controller.dispatchAction(CancelSelectionAllEmailAction()), onEmailActionTypeAction: (listEmails, actionType) => diff --git a/lib/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart b/lib/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart index 3b56c10ae..a20ce6533 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart @@ -103,9 +103,9 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget { } String _getInformationSender() { - if (_presentationMailbox?.role == PresentationMailbox.roleSent - || _presentationMailbox?.role == PresentationMailbox.roleDrafts - || _presentationMailbox?.role == PresentationMailbox.roleOutbox) { + if (_presentationMailbox?.isSent == true + || _presentationMailbox?.isDrafts == true + || _presentationMailbox?.isOutbox == true) { return _presentationEmail.recipientsName(); } return _presentationEmail.getSenderName(); diff --git a/lib/features/search/presentation/search_email_controller.dart b/lib/features/search/presentation/search_email_controller.dart index fcc163cce..c3e373644 100644 --- a/lib/features/search/presentation/search_email_controller.dart +++ b/lib/features/search/presentation/search_email_controller.dart @@ -220,7 +220,7 @@ class SearchEmailController extends BaseController void _refreshChangesSearchEmailsSuccess(RefreshChangesSearchEmailSuccess success) { final resultEmailSearchList = success.emailList - .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailbox)) + .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById)) .toList(); final emailsBeforeChanges = listResultSearch; @@ -281,7 +281,7 @@ class SearchEmailController extends BaseController void _searchEmailsSuccess(SearchEmailSuccess success) { final resultEmailSearchList = success.emailList - .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailbox)) + .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById)) .toList(); final emailsBeforeChanges = listResultSearch; @@ -327,7 +327,7 @@ class SearchEmailController extends BaseController void _searchMoreEmailsSuccess(SearchMoreEmailSuccess success) { if (success.emailList.isNotEmpty) { final resultEmailSearchList = success.emailList - .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailbox)) + .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById)) .where((email) => !listResultSearch.contains(email)) .toList(); listResultSearch.addAll(resultEmailSearchList); @@ -639,20 +639,20 @@ class SearchEmailController extends BaseController break; case EmailActionType.moveToMailbox: cancelSelectionMode(context); - final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailbox); + final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById); if (mailboxContainCurrent != null) { moveSelectedMultipleEmailToMailbox(listEmails, mailboxContainCurrent); } break; case EmailActionType.moveToTrash: cancelSelectionMode(context); - final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailbox); + final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById); if (mailboxContainCurrent != null) { moveSelectedMultipleEmailToTrash(listEmails, mailboxContainCurrent); } break; case EmailActionType.deletePermanently: - final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailbox); + final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById); if (mailboxContainCurrent != null) { deleteSelectionEmailsPermanently( context, @@ -664,7 +664,7 @@ class SearchEmailController extends BaseController break; case EmailActionType.moveToSpam: cancelSelectionMode(context); - final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailbox); + final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById); if (mailboxContainCurrent != null) { moveSelectedMultipleEmailToSpam(listEmails, mailboxContainCurrent); } diff --git a/lib/features/search/presentation/search_email_view.dart b/lib/features/search/presentation/search_email_view.dart index 513ce866f..99c807ef3 100644 --- a/lib/features/search/presentation/search_email_view.dart +++ b/lib/features/search/presentation/search_email_view.dart @@ -62,7 +62,7 @@ class SearchEmailView extends GetWidget if (controller.selectionMode.value == SelectMode.ACTIVE) { return AppBarSelectionMode( controller.listResultSearch.listEmailSelected, - controller.mailboxDashBoardController.mapMailbox, + controller.mailboxDashBoardController.mapMailboxById, onCancelSelection: () => controller.cancelSelectionMode(context), onHandleEmailAction: (actionType, listEmails) => controller.handleSelectionEmailAction(context, actionType, listEmails)); @@ -377,7 +377,7 @@ class SearchEmailView extends GetWidget onTap: () { final emailPreview = listSuggestionSearch[index]; final mailboxContain = emailPreview - .findMailboxContain(controller.mailboxDashBoardController.mapMailbox); + .findMailboxContain(controller.mailboxDashBoardController.mapMailboxById); controller.pressEmailAction( context, EmailActionType.preview, @@ -430,14 +430,14 @@ class SearchEmailView extends GetWidget padding: SearchEmailUtils.getPaddingSearchResultList(context, _responsiveUtils), paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, _responsiveUtils), mailboxCurrent: listPresentationEmail[index].findMailboxContain( - controller.mailboxDashBoardController.mapMailbox)) + controller.mailboxDashBoardController.mapMailboxById)) ..addOnPressEmailActionClick((action, email) => controller.pressEmailAction( context, action, email, mailboxContain: email.findMailboxContain( - controller.mailboxDashBoardController.mapMailbox))) + controller.mailboxDashBoardController.mapMailboxById))) ..addOnMoreActionClick((email, position) => _responsiveUtils.isMobile(context) ? controller.openContextMenuAction(context, _contextMenuActionTile(context, email)) : controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email)))) @@ -470,7 +470,7 @@ class SearchEmailView extends GetWidget } Widget _markAsEmailSpamOrUnSpamAction(BuildContext context, PresentationEmail email) { - final mailboxContain = email.findMailboxContain(controller.mailboxDashBoardController.mapMailbox); + final mailboxContain = email.findMailboxContain(controller.mailboxDashBoardController.mapMailboxById); return (EmailActionCupertinoActionSheetActionBuilder( const Key('mark_as_spam_or_un_spam_action'), diff --git a/lib/features/thread/presentation/mixin/email_action_controller.dart b/lib/features/thread/presentation/mixin/email_action_controller.dart index 25133993a..f4284ff17 100644 --- a/lib/features/thread/presentation/mixin/email_action_controller.dart +++ b/lib/features/thread/presentation/mixin/email_action_controller.dart @@ -48,7 +48,7 @@ mixin EmailActionController { void moveToTrash(PresentationEmail email) async { final currentMailbox = mailboxDashBoardController.selectedMailbox.value; final accountId = mailboxDashBoardController.accountId.value; - final trashMailboxId = mailboxDashBoardController.mapDefaultMailboxId[PresentationMailbox.roleTrash]; + final trashMailboxId = mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleTrash]; if (currentMailbox != null && accountId != null && trashMailboxId != null) { _moveToTrashAction(accountId, MoveToMailboxRequest( diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index 7e808170b..9d95b8024 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -279,7 +279,7 @@ class ThreadController extends BaseController { mailboxDashBoardController.clearDashBoardAction(); } else if (action is OpenEmailDetailedFromSuggestionQuickSearchAction) { final mailboxContain = action.presentationEmail - .findMailboxContain(mailboxDashBoardController.mapMailbox); + .findMailboxContain(mailboxDashBoardController.mapMailboxById); pressEmailAction( action.context, EmailActionType.preview, @@ -902,7 +902,7 @@ class ThreadController extends BaseController { void _searchEmailsSuccess(SearchEmailSuccess success) { final resultEmailSearchList = success.emailList - .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailbox)) + .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById)) .toList(); final emailsSearchBeforeChanges = emailList; @@ -928,7 +928,7 @@ class ThreadController extends BaseController { void _searchMoreEmailsSuccess(SearchMoreEmailSuccess success) { if (success.emailList.isNotEmpty) { final resultEmailSearchList = success.emailList - .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailbox)) + .map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById)) .where((email) => !emailList.contains(email)) .toList(); emailList.addAll(resultEmailSearchList); @@ -956,7 +956,7 @@ class ThreadController extends BaseController { break; case EmailActionType.moveToMailbox: final mailboxContainCurrent = searchController.isSearchEmailRunning - ? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailbox) + ? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById) : currentMailbox; if (mailboxContainCurrent != null) { moveSelectedMultipleEmailToMailbox(selectionEmail, mailboxContainCurrent); @@ -964,7 +964,7 @@ class ThreadController extends BaseController { break; case EmailActionType.moveToTrash: final mailboxContainCurrent = searchController.isSearchEmailRunning - ? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailbox) + ? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById) : currentMailbox; if (mailboxContainCurrent != null) { moveSelectedMultipleEmailToTrash(selectionEmail, mailboxContainCurrent); @@ -972,7 +972,7 @@ class ThreadController extends BaseController { break; case EmailActionType.deletePermanently: final mailboxContainCurrent = searchController.isSearchEmailRunning - ? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailbox) + ? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById) : currentMailbox; if (mailboxContainCurrent != null) { deleteSelectionEmailsPermanently( @@ -984,7 +984,7 @@ class ThreadController extends BaseController { break; case EmailActionType.moveToSpam: final mailboxContainCurrent = searchController.isSearchEmailRunning - ? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailbox) + ? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById) : currentMailbox; if (mailboxContainCurrent != null) { moveSelectedMultipleEmailToSpam(selectionEmail, mailboxContainCurrent); @@ -1125,7 +1125,7 @@ class ThreadController extends BaseController { void moveToTrash(PresentationEmail email) async { final currentMailbox = mailboxDashBoardController.selectedMailbox.value; final accountId = mailboxDashBoardController.accountId.value; - final trashMailboxId = mailboxDashBoardController.mapDefaultMailboxId[PresentationMailbox.roleTrash]; + final trashMailboxId = mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleTrash]; if (currentMailbox != null && accountId != null && trashMailboxId != null) { _moveToTrashAction(accountId, MoveToMailboxRequest( @@ -1294,7 +1294,7 @@ class ThreadController extends BaseController { void _emptyTrashFolderAction() { cancelSelectEmail(); - final trashMailboxId = mailboxDashBoardController.mapDefaultMailboxId[PresentationMailbox.roleTrash]; + final trashMailboxId = mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleTrash]; log('ThreadController::_emptyTrashFolderAction(): trashMailboxId: $trashMailboxId'); if (_accountId != null && trashMailboxId != null) { consumeState(_emptyTrashFolderInteractor.execute(_accountId!, trashMailboxId)); diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index 4604eff17..faa69caf7 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -340,7 +340,7 @@ class ThreadView extends GetWidget with AppLoaderMixin, controller.searchQuery, mailboxCurrent: controller.searchController.isSearchEmailRunning ? listPresentationEmail[index].findMailboxContain( - controller.mailboxDashBoardController.mapMailbox) + controller.mailboxDashBoardController.mapMailboxById) : controller.currentMailbox, advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue) ..addOnPressEmailActionClick((action, email) => @@ -349,7 +349,7 @@ class ThreadView extends GetWidget with AppLoaderMixin, action, email, mailboxContain: controller.searchController.isSearchEmailRunning - ? email.findMailboxContain(controller.mailboxDashBoardController.mapMailbox) + ? email.findMailboxContain(controller.mailboxDashBoardController.mapMailboxById) : controller.currentMailbox)) ..addOnMoreActionClick((email, position) => _responsiveUtils.isMobile(context) ? controller.openContextMenuAction(context, _contextMenuActionTile(context, email)) @@ -450,7 +450,7 @@ class ThreadView extends GetWidget with AppLoaderMixin, Widget _markAsEmailSpamOrUnSpamAction(BuildContext context, PresentationEmail email) { final mailboxContain = controller.searchController.isSearchEmailRunning - ? email.findMailboxContain(controller.mailboxDashBoardController.mapMailbox) + ? email.findMailboxContain(controller.mailboxDashBoardController.mapMailboxById) : controller.currentMailbox; return (EmailActionCupertinoActionSheetActionBuilder( const Key('mark_as_spam_or_un_spam_action'), diff --git a/model/lib/mailbox/presentation_mailbox.dart b/model/lib/mailbox/presentation_mailbox.dart index 2d27ece73..68abf06e9 100644 --- a/model/lib/mailbox/presentation_mailbox.dart +++ b/model/lib/mailbox/presentation_mailbox.dart @@ -70,7 +70,7 @@ class PresentationMailbox with EquatableMixin { bool get isSent => role == roleSent; - bool get isOutbox => role == roleOutbox; + bool get isOutbox => name?.name == 'Outbox'; bool matchCountingRules() { if (isSpam || isTrash || isDrafts || isTemplates || isSent) {