TF-1831 Handle system back button in dialog view

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit dc93aa9961987315bd1b478aecda530049b75f02)
This commit is contained in:
dab246
2023-12-10 02:53:23 +07:00
committed by Dat H. Pham
parent 9e5e6af9ce
commit fbb43e3bb0
15 changed files with 286 additions and 254 deletions
@@ -36,7 +36,6 @@ import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_sta
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_star_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/unsubscribe_email_state.dart';
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
@@ -45,6 +44,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/quick_sear
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/quick_search_email_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/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
@@ -227,6 +227,9 @@ class SearchEmailController extends BaseController
if (action is CloseSearchEmailViewAction) {
closeSearchView(context: currentContext);
mailboxDashBoardController.clearDashBoardAction();
} else if (action is CancelSelectionSearchEmailAction) {
cancelSelectionMode();
mailboxDashBoardController.clearDashBoardAction();
}
}
);
@@ -305,7 +308,7 @@ class SearchEmailController extends BaseController
if (session != null && accountId != null) {
canSearchMore = true;
searchIsRunning.value = true;
cancelSelectionMode(context);
cancelSelectionMode();
if (PlatformInfo.isWeb) {
RouteUtils.replaceBrowserHistory(
title: 'SearchEmail',
@@ -769,7 +772,7 @@ class SearchEmailController extends BaseController
}
}
void cancelSelectionMode(BuildContext context) {
void cancelSelectionMode() {
listResultSearch.value = listResultSearch
.map((email) => email.toSelectedEmail(selectMode: SelectMode.INACTIVE))
.toList();
@@ -783,31 +786,31 @@ class SearchEmailController extends BaseController
) {
switch(actionType) {
case EmailActionType.markAsRead:
cancelSelectionMode(context);
cancelSelectionMode();
markAsReadSelectedMultipleEmail(listEmails, ReadActions.markAsRead);
break;
case EmailActionType.markAsUnread:
cancelSelectionMode(context);
cancelSelectionMode();
markAsReadSelectedMultipleEmail(listEmails, ReadActions.markAsUnread);
break;
case EmailActionType.markAsStarred:
cancelSelectionMode(context);
cancelSelectionMode();
markAsStarSelectedMultipleEmail(listEmails, MarkStarAction.markStar);
break;
case EmailActionType.unMarkAsStarred:
cancelSelectionMode(context);
cancelSelectionMode();
markAsStarSelectedMultipleEmail(listEmails, MarkStarAction.unMarkStar);
break;
case EmailActionType.moveToMailbox:
cancelSelectionMode(context);
cancelSelectionMode();
final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById);
if (mailboxContainCurrent != null) {
moveSelectedMultipleEmailToMailbox(context, listEmails, mailboxContainCurrent);
}
break;
case EmailActionType.moveToTrash:
cancelSelectionMode(context);
cancelSelectionMode();
final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById);
if (mailboxContainCurrent != null) {
moveSelectedMultipleEmailToTrash(listEmails, mailboxContainCurrent);
@@ -821,18 +824,18 @@ class SearchEmailController extends BaseController
DeleteActionType.multiple,
listEmails: listEmails,
mailboxCurrent: mailboxContainCurrent,
onCancelSelectionEmail: () => cancelSelectionMode(context));
onCancelSelectionEmail: () => cancelSelectionMode());
}
break;
case EmailActionType.moveToSpam:
cancelSelectionMode(context);
cancelSelectionMode();
final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById);
if (mailboxContainCurrent != null) {
moveSelectedMultipleEmailToSpam(listEmails, mailboxContainCurrent);
}
break;
case EmailActionType.unSpam:
cancelSelectionMode(context);
cancelSelectionMode();
unSpamSelectedMultipleEmail(listEmails);
break;
default:
@@ -62,7 +62,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
return AppBarSelectionMode(
controller.listResultSearch.listEmailSelected,
controller.mailboxDashBoardController.mapMailboxById,
onCancelSelection: () => controller.cancelSelectionMode(context),
onCancelSelection: controller.cancelSelectionMode,
onHandleEmailAction: (actionType, listEmails) =>
controller.handleSelectionEmailAction(context, actionType, listEmails));
} else {