From 47bfc811ba8445bcce0d86a5729b65ee3ba83253 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 17 Feb 2023 13:45:11 +0700 Subject: [PATCH] Refresh change mailbox after update mailbox visibility --- .../controller/single_email_controller.dart | 1 + .../mailbox_dashboard_controller.dart | 7 +- .../manage_account_dashboard_controller.dart | 7 + .../manage_account_dashboard_view.dart | 169 +++++++++--------- 4 files changed, 99 insertions(+), 85 deletions(-) diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index 2bd204816..d898a3181 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -1162,6 +1162,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { emailSupervisorController.backToPreviousEmail(); } } + Future backButtonPressedCallbackAction(BuildContext context) async { if (!BuildUtils.isWeb) { closeEmailView(context); 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 53bb401a8..a9941c6f3 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -1268,11 +1268,14 @@ class MailboxDashBoardController extends ReloadableController { if (isDrawerOpen) { closeMailboxMenuDrawer(); } - final result = await push(AppRoutes.settings, - arguments: ManageAccountArguments(sessionCurrent)); + final result = await push( + AppRoutes.settings, + arguments: ManageAccountArguments(sessionCurrent) + ); if (result is VacationResponse) { vacationResponse.value = result; + dispatchMailboxUIAction(RefreshChangeMailboxAction(null)); } } diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index 9125ce154..3f644af85 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -294,4 +294,11 @@ class ManageAccountDashBoardController extends ReloadableController { dashboardSettingAction.value = newAction; } } + + Future backButtonPressedCallbackAction(BuildContext context) async { + if (!BuildUtils.isWeb) { + backToMailboxDashBoard(context); + } + return false; + } } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart index 60f18702e..705052817 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart @@ -34,90 +34,93 @@ class ManageAccountDashBoardView extends GetWidget FocusScope.of(context).unfocus(), - child: ResponsiveWidget( - responsiveUtils: _responsiveUtils, - desktop: Column(children: [ - Row(children: [ - Container(width: 256, color: Colors.white, - padding: const EdgeInsets.only(top: 25, bottom: 25, left: 32), - child: Row(children: [ - (SloganBuilder(arrangedByHorizontal: true) - ..setSloganText(AppLocalizations.of(context).app_name) - ..setSloganTextAlign(TextAlign.center) - ..setSloganTextStyle(const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold)) - ..setSizeLogo(24) - ..addOnTapCallback(() => controller.backToMailboxDashBoard(context)) - ..setLogo(_imagePaths.icLogoTMail)) - .build(), - Obx(() { - if (controller.appInformation.value != null) { - return Padding(padding: const EdgeInsets.only(top: 6), - child: Text( - 'v.${controller.appInformation.value!.version}', - textAlign: TextAlign.center, - style: const TextStyle(fontSize: 13, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500), - )); - } else { - return const SizedBox.shrink(); - } - }), - ]) - ), - Expanded(child: Padding( - padding: const EdgeInsets.only(right: 10, top: 16, bottom: 10, left: 48), - child: _buildRightHeader(context))) + return WillPopScope( + onWillPop: () => controller.backButtonPressedCallbackAction.call(context), + child: Scaffold( + backgroundColor: Colors.white, + drawerEnableOpenDragGesture: false, + body: GestureDetector( + onTap: () => FocusScope.of(context).unfocus(), + child: ResponsiveWidget( + responsiveUtils: _responsiveUtils, + desktop: Column(children: [ + Row(children: [ + Container(width: 256, color: Colors.white, + padding: const EdgeInsets.only(top: 25, bottom: 25, left: 32), + child: Row(children: [ + (SloganBuilder(arrangedByHorizontal: true) + ..setSloganText(AppLocalizations.of(context).app_name) + ..setSloganTextAlign(TextAlign.center) + ..setSloganTextStyle(const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold)) + ..setSizeLogo(24) + ..addOnTapCallback(() => controller.backToMailboxDashBoard(context)) + ..setLogo(_imagePaths.icLogoTMail)) + .build(), + Obx(() { + if (controller.appInformation.value != null) { + return Padding(padding: const EdgeInsets.only(top: 6), + child: Text( + 'v.${controller.appInformation.value!.version}', + textAlign: TextAlign.center, + style: const TextStyle(fontSize: 13, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500), + )); + } else { + return const SizedBox.shrink(); + } + }), + ]) + ), + Expanded(child: Padding( + padding: const EdgeInsets.only(right: 10, top: 16, bottom: 10, left: 48), + child: _buildRightHeader(context))) + ]), + Expanded(child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(child: ManageAccountMenuView(), width: ResponsiveUtils.defaultSizeMenu), + Expanded(child: Container( + color: AppColor.colorBgDesktop, + child: Column(children: [ + Obx(() { + if (controller.vacationResponse.value?.vacationResponderIsValid == true) { + return VacationNotificationMessageWidget( + margin: const EdgeInsets.only( + top: 16, + left: BuildUtils.isWeb ? 24 : 16, + right: BuildUtils.isWeb ? 24 : 16), + fromAccountDashBoard: true, + vacationResponse: controller.vacationResponse.value!, + actionGotoVacationSetting: !controller.inVacationSettings() + ? () => controller.selectAccountMenuItem(AccountMenuItem.vacation) + : null, + actionEndNow: () => controller.disableVacationResponder()); + } else if ((controller.vacationResponse.value?.vacationResponderIsWaiting == true + || controller.vacationResponse.value?.vacationResponderIsStopped == true) + && controller.accountMenuItemSelected.value == AccountMenuItem.vacation) { + return VacationNotificationMessageWidget( + margin: const EdgeInsets.only( + top: 16, + left: BuildUtils.isWeb ? 24 : 16, + right: BuildUtils.isWeb ? 24 : 16), + fromAccountDashBoard: true, + vacationResponse: controller.vacationResponse.value!, + padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 16), + leadingIcon: const Padding( + padding: EdgeInsets.only(right: 16), + child: Icon(Icons.timer, size: 20), + )); + } else { + return const SizedBox.shrink(); + } + }), + Expanded(child: _viewDisplayedOfAccountMenuItem()) + ]), + )) + ], + )) ]), - Expanded(child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(child: ManageAccountMenuView(), width: ResponsiveUtils.defaultSizeMenu), - Expanded(child: Container( - color: AppColor.colorBgDesktop, - child: Column(children: [ - Obx(() { - if (controller.vacationResponse.value?.vacationResponderIsValid == true) { - return VacationNotificationMessageWidget( - margin: const EdgeInsets.only( - top: 16, - left: BuildUtils.isWeb ? 24 : 16, - right: BuildUtils.isWeb ? 24 : 16), - fromAccountDashBoard: true, - vacationResponse: controller.vacationResponse.value!, - actionGotoVacationSetting: !controller.inVacationSettings() - ? () => controller.selectAccountMenuItem(AccountMenuItem.vacation) - : null, - actionEndNow: () => controller.disableVacationResponder()); - } else if ((controller.vacationResponse.value?.vacationResponderIsWaiting == true - || controller.vacationResponse.value?.vacationResponderIsStopped == true) - && controller.accountMenuItemSelected.value == AccountMenuItem.vacation) { - return VacationNotificationMessageWidget( - margin: const EdgeInsets.only( - top: 16, - left: BuildUtils.isWeb ? 24 : 16, - right: BuildUtils.isWeb ? 24 : 16), - fromAccountDashBoard: true, - vacationResponse: controller.vacationResponse.value!, - padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 16), - leadingIcon: const Padding( - padding: EdgeInsets.only(right: 16), - child: Icon(Icons.timer, size: 20), - )); - } else { - return const SizedBox.shrink(); - } - }), - Expanded(child: _viewDisplayedOfAccountMenuItem()) - ]), - )) - ], - )) - ]), - mobile: SettingsView(closeAction: () => controller.backToMailboxDashBoard(context)) + mobile: SettingsView(closeAction: () => controller.backToMailboxDashBoard(context)) + ), ), ), );