From e04b88f87c3de5727ad16e4057aaa2ea5d183cd7 Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 14 Oct 2025 15:30:13 +0700 Subject: [PATCH] TF-4069 Do not show toast message when disable vacation automatically --- .../controller/mailbox_dashboard_controller.dart | 7 +++++-- .../domain/state/update_vacation_state.dart | 5 +++-- .../domain/usecases/update_vacation_interactor.dart | 11 +++++++++-- .../handle_vacation_response_extension.dart | 2 +- .../manage_account_dashboard_controller.dart | 10 ++++++++-- .../presentation/menu/settings/settings_view.dart | 12 +++++++----- .../presentation/vacation/vacation_controller.dart | 1 + 7 files changed, 34 insertions(+), 14 deletions(-) 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 91d9b6392..23b0ec048 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -2062,10 +2062,13 @@ class MailboxDashBoardController extends ReloadableController void _handleUpdateVacationSuccess(UpdateVacationSuccess success) { if (success.listVacationResponse.isNotEmpty) { - if (currentContext != null && currentOverlayContext != null) { + if (!success.isAuto && + currentContext != null && + currentOverlayContext != null) { appToast.showToastSuccessMessage( currentOverlayContext!, - AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully); + AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully, + ); } vacationResponse.value = success.listVacationResponse.first; log('MailboxDashBoardController::_handleUpdateVacationSuccess(): $vacationResponse'); diff --git a/lib/features/manage_account/domain/state/update_vacation_state.dart b/lib/features/manage_account/domain/state/update_vacation_state.dart index faa605c76..16697e9ee 100644 --- a/lib/features/manage_account/domain/state/update_vacation_state.dart +++ b/lib/features/manage_account/domain/state/update_vacation_state.dart @@ -6,11 +6,12 @@ class LoadingUpdateVacation extends UIState {} class UpdateVacationSuccess extends UIState { final List listVacationResponse; + final bool isAuto; - UpdateVacationSuccess(this.listVacationResponse); + UpdateVacationSuccess(this.listVacationResponse, this.isAuto); @override - List get props => [listVacationResponse]; + List get props => [listVacationResponse, isAuto]; } class UpdateVacationFailure extends FeatureFailure { diff --git a/lib/features/manage_account/domain/usecases/update_vacation_interactor.dart b/lib/features/manage_account/domain/usecases/update_vacation_interactor.dart index 651ed64d3..f090227a2 100644 --- a/lib/features/manage_account/domain/usecases/update_vacation_interactor.dart +++ b/lib/features/manage_account/domain/usecases/update_vacation_interactor.dart @@ -13,11 +13,18 @@ class UpdateVacationInteractor { UpdateVacationInteractor(this.vacationRepository); - Stream> execute(AccountId accountId, VacationResponse vacationResponse) async* { + Stream> execute( + AccountId accountId, + VacationResponse vacationResponse, + {bool isAuto = false} + ) async* { try { yield Right(LoadingUpdateVacation()); final listVacationResponse = await vacationRepository.updateVacation(accountId, vacationResponse); - yield Right(UpdateVacationSuccess(listVacationResponse)); + yield Right(UpdateVacationSuccess( + listVacationResponse, + isAuto, + )); } catch (exception) { yield Left(UpdateVacationFailure(exception)); } diff --git a/lib/features/manage_account/presentation/extensions/handle_vacation_response_extension.dart b/lib/features/manage_account/presentation/extensions/handle_vacation_response_extension.dart index 0e0b5ea91..004748e51 100644 --- a/lib/features/manage_account/presentation/extensions/handle_vacation_response_extension.dart +++ b/lib/features/manage_account/presentation/extensions/handle_vacation_response_extension.dart @@ -16,6 +16,6 @@ extension HandleVacationResponseExtension on ManageAccountDashBoardController { } void automaticallyDeactivateVacation(VacationResponse vacationResponse) { - disableVacationResponder(vacationResponse); + disableVacationResponder(vacationResponse, isAuto: true); } } 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 71cea8c51..130fe044c 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -289,11 +289,15 @@ class ManageAccountDashBoardController extends ReloadableController } } - void disableVacationResponder(VacationResponse vacation) { + void disableVacationResponder( + VacationResponse vacation, { + bool isAuto = false, + }) { if (accountId.value != null && _updateVacationInteractor != null) { consumeState(_updateVacationInteractor!.execute( accountId.value!, vacation.clearAllExceptHtmlBody(), + isAuto: isAuto, )); } else { consumeState( @@ -304,11 +308,13 @@ class ManageAccountDashBoardController extends ReloadableController void _handleUpdateVacationSuccess(UpdateVacationSuccess success) { if (success.listVacationResponse.isNotEmpty && + !success.isAuto && currentContext != null && currentOverlayContext != null) { appToast.showToastSuccessMessage( currentOverlayContext!, - AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully); + AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully, + ); } setUpVacation(success.listVacationResponse.firstOrNull); } diff --git a/lib/features/manage_account/presentation/menu/settings/settings_view.dart b/lib/features/manage_account/presentation/menu/settings/settings_view.dart index eb024426f..b2c8d6774 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_view.dart @@ -42,15 +42,17 @@ class SettingsView extends GetWidget { Obx(() { final dashboard = controller.manageAccountDashboardController; final vacation = dashboard.vacationResponse.value; - final isWebDesktop = controller.responsiveUtils.isWebDesktop(context); + final isWebDesktopResponsive = controller + .responsiveUtils + .isWebDesktop(context); if (vacation?.vacationResponderIsValid == true) { return VacationNotificationMessageWidget( margin: EdgeInsetsDirectional.only( start: 12, end: 12, - top: isWebDesktop ? 8 : 0, - bottom: isWebDesktop ? 0 : 16, + top: isWebDesktopResponsive ? 8 : 0, + bottom: isWebDesktopResponsive ? 0 : 16, ), fromAccountDashBoard: true, vacationResponse: vacation!, @@ -65,8 +67,8 @@ class SettingsView extends GetWidget { margin: EdgeInsetsDirectional.only( start: 12, end: 12, - top: isWebDesktop ? 8 : 0, - bottom: isWebDesktop ? 0 : 16, + top: isWebDesktopResponsive ? 8 : 0, + bottom: isWebDesktopResponsive ? 0 : 16, ), fromAccountDashBoard: true, vacationResponse: vacation!, diff --git a/lib/features/manage_account/presentation/vacation/vacation_controller.dart b/lib/features/manage_account/presentation/vacation/vacation_controller.dart index 941f61a55..5e7451e33 100644 --- a/lib/features/manage_account/presentation/vacation/vacation_controller.dart +++ b/lib/features/manage_account/presentation/vacation/vacation_controller.dart @@ -245,6 +245,7 @@ class VacationController extends BaseController { void _handleUpdateVacationSuccess(UpdateVacationSuccess success) { if (success.listVacationResponse.isNotEmpty && + !success.isAuto && currentOverlayContext != null && currentContext != null) { appToast.showToastSuccessMessage(