From b8d66dc5393e37d6e0fc9b310a47c23a14077501 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 11 Apr 2025 15:57:29 +0700 Subject: [PATCH] Avoid displaying duplicate session expiration dialogs Signed-off-by: dab246 --- lib/features/base/base_controller.dart | 22 ++++++++++++++++++---- lib/main/utils/twake_app_manager.dart | 5 +++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart index cc6866edf..eb085b9a3 100644 --- a/lib/features/base/base_controller.dart +++ b/lib/features/base/base_controller.dart @@ -231,6 +231,8 @@ abstract class BaseController extends GetxController return; } + if (twakeAppManager.isSessionExpiresDialogOpened) return; + final appLocalizations = AppLocalizations.of(currentContext!); showConfirmDialogAction( currentContext!, @@ -242,10 +244,21 @@ abstract class BaseController extends GetxController outsideDismissible: false, titleActionButtonMaxLines: 1, icon: SvgPicture.asset(imagePaths.icTMailLogo, width: 64, height: 64), - onConfirmAction: _performSaveAndReconnection, - onCancelAction: _performReconnection, - onCloseButtonAction: _performCloseReconnectionConfirmDialog - ); + onConfirmAction: () { + twakeAppManager.setSessionExpiresDialogDisplayState(false); + _performSaveAndReconnection(); + }, + onCancelAction: () { + twakeAppManager.setSessionExpiresDialogDisplayState(false); + _performReconnection(); + }, + onCloseButtonAction: () { + twakeAppManager.setSessionExpiresDialogDisplayState(false); + _performCloseReconnectionConfirmDialog(); + } + ).whenComplete(() => twakeAppManager.setSessionExpiresDialogDisplayState(false)); + + twakeAppManager.setSessionExpiresDialogDisplayState(true); } void _performSaveAndReconnection() { @@ -265,6 +278,7 @@ abstract class BaseController extends GetxController } void onDataFailureViewState(Failure failure) { + log('$runtimeType::onDataFailureViewState:failure = ${failure.runtimeType}'); if (failure is FeatureFailure) { final isUrgentException = validateUrgentException(failure.exception); if (isUrgentException) { diff --git a/lib/main/utils/twake_app_manager.dart b/lib/main/utils/twake_app_manager.dart index d10cfc74c..dc3d10481 100644 --- a/lib/main/utils/twake_app_manager.dart +++ b/lib/main/utils/twake_app_manager.dart @@ -1,8 +1,13 @@ class TwakeAppManager { bool _hasComposer = false; + bool _isSessionExpiresDialogOpened = false; void setHasComposer(bool value) => _hasComposer = value; bool get hasComposer => _hasComposer; + + void setSessionExpiresDialogDisplayState(bool value) => _isSessionExpiresDialogOpened = value; + + bool get isSessionExpiresDialogOpened => _isSessionExpiresDialogOpened; }