TF-1831 Handle system back button to back to the INBOX

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 17a40a6162a1f4eb1390327662761d1a015d334a)
This commit is contained in:
dab246
2023-12-09 17:14:59 +07:00
committed by Dat H. Pham
parent bb98f02918
commit 4bfc551a2a
3 changed files with 52 additions and 51 deletions
@@ -2232,7 +2232,12 @@ class MailboxDashBoardController extends ReloadableController {
return true;
case DashboardRoutes.thread:
if (PlatformInfo.isMobile) {
return false;
if (selectedMailbox.value?.isInbox == true) {
return false;
} else {
openDefaultMailbox();
return true;
}
}
if (searchController.isSearchEmailRunning) {
dispatchMailboxUIAction(SystemBackToInboxAction());
@@ -2240,6 +2245,12 @@ class MailboxDashBoardController extends ReloadableController {
pushAndPopAll(AppRoutes.home);
}
return true;
case DashboardRoutes.sendingQueue:
if (PlatformInfo.isMobile) {
openDefaultMailbox();
return true;
}
return false;
case DashboardRoutes.searchEmail:
dispatchAction(CloseSearchEmailViewAction());
return true;
@@ -1,7 +1,7 @@
import 'package:core/utils/app_logger.dart';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -24,19 +24,19 @@ import 'package:tmail_ui_user/features/offline_mode/model/sending_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/extensions/list_sending_email_extension.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/extensions/sending_email_extension.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/state/delete_multiple_sending_email_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/state/get_stored_sending_email_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/state/update_multiple_sending_email_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/state/update_sending_email_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/delete_multiple_sending_email_interactor.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/delete_sending_email_interactor.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/get_stored_sending_email_interactor.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/update_multiple_sending_email_interactor.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/update_sending_email_interactor.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_arguments.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/utils/sending_queue_isolate_manager.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/state/delete_multiple_sending_email_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/delete_multiple_sending_email_interactor.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/extensions/list_sending_email_extension.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_action_type.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_arguments.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/utils/sending_queue_isolate_manager.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -367,13 +367,6 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi
);
}
Future<bool> backButtonPressedCallbackAction(BuildContext context) async {
if (PlatformInfo.isMobile) {
dashboardController.openDefaultMailbox();
}
return false;
}
@override
void handleSuccessViewState(Success success) {
super.handleSuccessViewState(success);
@@ -2,13 +2,13 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/mailbox/select_mode.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/base/widget/compose_floating_button.dart';
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/extensions/list_sending_email_extension.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/sending_queue_controller.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/widgets/app_bar_sending_queue_widget.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/widgets/banner_message_sending_queue_widget.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/widgets/bottom_bar_sending_queue_widget.dart';
@@ -20,49 +20,46 @@ class SendingQueueView extends GetWidget<SendingQueueController> with AppLoaderM
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () => controller.backButtonPressedCallbackAction.call(context),
child: Scaffold(
backgroundColor: Colors.white,
body: SafeArea(
child: Column(
children: [
return Scaffold(
backgroundColor: Colors.white,
body: SafeArea(
child: Column(
children: [
Obx(() {
return AppBarSendingQueueWidget(
listSendingEmailSelected: controller.dashboardController.listSendingEmails.listSelected(),
onOpenMailboxMenu: controller.openMailboxMenu,
onBackAction: controller.disableSelectionMode,
selectMode: controller.selectionState.value,
);
}),
const Divider(color: AppColor.colorDividerComposer, height: 1),
if (PlatformInfo.isIOS)
const BannerMessageSendingQueueWidget()
else
Obx(() {
return AppBarSendingQueueWidget(
listSendingEmailSelected: controller.dashboardController.listSendingEmails.listSelected(),
onOpenMailboxMenu: controller.openMailboxMenu,
onBackAction: controller.disableSelectionMode,
selectMode: controller.selectionState.value,
);
}),
const Divider(color: AppColor.colorDividerComposer, height: 1),
if (PlatformInfo.isIOS)
const BannerMessageSendingQueueWidget()
else
Obx(() {
if (!controller.isConnectedNetwork) {
return const BannerMessageSendingQueueWidget();
} else {
return const SizedBox.shrink();
}
}),
Expanded(child: _buildListSendingEmails(context)),
Obx(() {
if (controller.isAllUnSelected) {
return const SizedBox.shrink();
if (!controller.isConnectedNetwork) {
return const BannerMessageSendingQueueWidget();
} else {
return BottomBarSendingQueueWidget(
listSendingEmailSelected: controller.dashboardController.listSendingEmails.listSelected(),
isConnectedNetwork: controller.isConnectedNetwork,
onHandleSendingEmailActionType: (actionType, listSendingEmails) => controller.handleSendingEmailActionType(context, actionType, listSendingEmails),
);
return const SizedBox.shrink();
}
}),
]
),
Expanded(child: _buildListSendingEmails(context)),
Obx(() {
if (controller.isAllUnSelected) {
return const SizedBox.shrink();
} else {
return BottomBarSendingQueueWidget(
listSendingEmailSelected: controller.dashboardController.listSendingEmails.listSelected(),
isConnectedNetwork: controller.isConnectedNetwork,
onHandleSendingEmailActionType: (actionType, listSendingEmails) => controller.handleSendingEmailActionType(context, actionType, listSendingEmails),
);
}
}),
]
),
floatingActionButton: _buildFloatingButtonCompose(),
),
floatingActionButton: _buildFloatingButtonCompose(),
);
}