diff --git a/lib/features/thread/presentation/extensions/handle_press_email_selection_action.dart b/lib/features/thread/presentation/extensions/handle_press_email_selection_action.dart index 788e3e00a..6b490e054 100644 --- a/lib/features/thread/presentation/extensions/handle_press_email_selection_action.dart +++ b/lib/features/thread/presentation/extensions/handle_press_email_selection_action.dart @@ -23,6 +23,8 @@ extension HandlePressEmailSelectionActionExtension on ThreadController { pressEmailSelectionAction(emailActionType, emails); } else if (type == EmailSelectionActionType.moreAction) { _showMoreActionMenu(context, emails, selectedMailbox); + } else if (type == EmailSelectionActionType.selectAll) { + _showSelectAllEmails(); } } @@ -80,4 +82,10 @@ extension HandlePressEmailSelectionActionExtension on ThreadController { }, ); } + + void _showSelectAllEmails() { + if (mailboxDashBoardController.emailsInCurrentMailbox.isAnySelectionInActive) { + setSelectAllEmailAction(); + } + } } diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index fa95eb71c..6c220581e 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -878,7 +878,7 @@ class ThreadController extends BaseController with EmailActionController { focusNodeKeyBoard?.requestFocus(); } - if (_isUnSelectedAll()) { + if (mailboxDashBoardController.emailsInCurrentMailbox.isAllSelectionInActive) { mailboxDashBoardController.currentSelectMode.value = SelectMode.INACTIVE; mailboxDashBoardController.listEmailSelected.clear(); } else { @@ -901,11 +901,6 @@ class ThreadController extends BaseController with EmailActionController { List get listEmailSelected => mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected; - bool _isUnSelectedAll() { - return mailboxDashBoardController.emailsInCurrentMailbox - .every((email) => email.selectMode == SelectMode.INACTIVE); - } - void cancelSelectEmail() { if (mailboxDashBoardController.currentSelectMode.value == SelectMode.INACTIVE) { return; diff --git a/model/lib/extensions/list_presentation_email_extension.dart b/model/lib/extensions/list_presentation_email_extension.dart index 559193ab7..872a24349 100644 --- a/model/lib/extensions/list_presentation_email_extension.dart +++ b/model/lib/extensions/list_presentation_email_extension.dart @@ -13,6 +13,10 @@ extension ListPresentationEmailExtension on List { return every((email) => email.selectMode == SelectMode.INACTIVE); } + bool get isAnySelectionInActive { + return any((email) => email.selectMode == SelectMode.INACTIVE); + } + List get listEmail => map((presentationEmail) => presentationEmail.toEmail()).toList(); List get listEmailSelected {