diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart index 46b5d1cbc..50d72af72 100644 --- a/lib/features/base/base_controller.dart +++ b/lib/features/base/base_controller.dart @@ -94,6 +94,7 @@ abstract class BaseController extends GetxController (failure) { if (failure is FeatureFailure) { final exception = _performFilterExceptionInError(failure.exception); + logError('BaseController::onData:exception: $exception'); if (exception != null) { handleExceptionAction(failure: failure, exception: exception); } else { @@ -121,42 +122,33 @@ abstract class BaseController extends GetxController Exception? _performFilterExceptionInError(dynamic error) { logError('BaseController::_performFilterExceptionInError(): $error'); if (error is NoNetworkError || error is ConnectionTimeout || error is InternalServerError) { - logError('BaseController::_performFilterExceptionInError(): NoNetworkError'); - if (PlatformInfo.isWeb) { - if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( - currentOverlayContext!, - AppLocalizations.of(currentContext!).no_internet_connection, - actionName: AppLocalizations.of(currentContext!).skip, - onActionClick: ToastView.dismiss, - leadingSVGIcon: _imagePaths.icNotConnection, - backgroundColor: AppColor.textFieldErrorBorderColor, - textColor: Colors.white, - infinityToast: true, - ); - } + if (PlatformInfo.isWeb && currentOverlayContext != null && currentContext != null) { + _appToast.showToastMessage( + currentOverlayContext!, + AppLocalizations.of(currentContext!).no_internet_connection, + actionName: AppLocalizations.of(currentContext!).skip, + onActionClick: ToastView.dismiss, + leadingSVGIcon: _imagePaths.icNotConnection, + backgroundColor: AppColor.textFieldErrorBorderColor, + textColor: Colors.white, + infinityToast: true, + ); } return error; } else if (error is BadCredentialsException) { - logError('BaseController::_performFilterExceptionInError(): BadCredentialsException'); if (currentOverlayContext != null && currentContext != null) { _appToast.showToastErrorMessage( currentOverlayContext!, - AppLocalizations.of(currentContext!).badCredentials); - } - if (authorizationInterceptors.isAppRunning) { - performInvokeLogoutAction(); + AppLocalizations.of(currentContext!).badCredentials + ); } return error; } else if (error is ConnectionError) { - logError('BaseController::_performFilterExceptionInError(): ConnectionError'); - if (authorizationInterceptors.isAppRunning) { - if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( - currentOverlayContext!, - AppLocalizations.of(currentContext!).connectionError); - } - performInvokeLogoutAction(); + if (authorizationInterceptors.isAppRunning && currentOverlayContext != null && currentContext != null) { + _appToast.showToastErrorMessage( + currentOverlayContext!, + AppLocalizations.of(currentContext!).connectionError + ); } return error; } @@ -168,6 +160,12 @@ abstract class BaseController extends GetxController void handleExceptionAction({Failure? failure, Exception? exception}) { logError('BaseController::handleExceptionAction():failure: $failure | exception: $exception'); + if (!authorizationInterceptors.isAppRunning) { + return; + } + if (exception is BadCredentialsException || exception is ConnectionError) { + performInvokeLogoutAction(); + } } void handleFailureViewState(Failure failure) { diff --git a/lib/features/session/presentation/session_controller.dart b/lib/features/session/presentation/session_controller.dart index 22aeb1296..a36b01593 100644 --- a/lib/features/session/presentation/session_controller.dart +++ b/lib/features/session/presentation/session_controller.dart @@ -53,9 +53,12 @@ class SessionController extends ReloadableController { @override void handleFailureViewState(Failure failure) { - super.handleFailureViewState(failure); if (failure is GetSessionFailure) { _handleSessionFailure(failure); + } if (failure is GetStoredSessionFailure) { + _handleSessionFailure(failure); + } else { + super.handleFailureViewState(failure); } } @@ -71,9 +74,10 @@ class SessionController extends ReloadableController { @override void handleExceptionAction({Failure? failure, Exception? exception}) { - super.handleExceptionAction(failure: failure, exception: exception); - if (PlatformInfo.isMobile && failure is GetSessionFailure && exception is NoNetworkError) { + if (PlatformInfo.isMobile && failure is GetSessionFailure) { _handleGetStoredSession(); + } else { + super.handleExceptionAction(failure: failure, exception: exception); } } @@ -85,7 +89,6 @@ class SessionController extends ReloadableController { } void _handleGetStoredSession() { - log('SessionController::_handleGetStoredSession():'); consumeState(_getStoredSessionInteractor.execute()); } @@ -93,31 +96,34 @@ class SessionController extends ReloadableController { consumeState(_getSessionInteractor.execute()); } - void _handleSessionFailure(Failure failure) { - log('SessionController::_handleSessionFailure(): $failure'); - if (failure is GetSessionFailure) { - final sessionException = failure.exception; - var errorMessage = ''; - if (_checkUrlError(sessionException) && currentContext != null) { - errorMessage = AppLocalizations.of(currentContext!).wrongUrlMessage; - } else if (sessionException is BadCredentialsException && currentContext != null) { - errorMessage = AppLocalizations.of(currentContext!).badCredentials; - } else if (sessionException is ConnectionError && currentContext != null) { - errorMessage = AppLocalizations.of(currentContext!).connectionError; - } else if (sessionException is UnknownError && currentContext != null) { - if (sessionException.message != null && sessionException.code != null) { - errorMessage = '[${sessionException.code}] ${sessionException.message}'; - } else if (sessionException.message != null) { - errorMessage = sessionException.message!; - } else { - errorMessage = AppLocalizations.of(currentContext!).unknownError; - } + void _handleSessionFailure(FeatureFailure failure) { + final sessionException = failure.exception; + var errorMessage = ''; + if (_checkUrlError(sessionException) && currentContext != null) { + errorMessage = AppLocalizations.of(currentContext!).wrongUrlMessage; + } else if (sessionException is BadCredentialsException && currentContext != null) { + errorMessage = AppLocalizations.of(currentContext!).badCredentials; + } else if (sessionException is ConnectionError && currentContext != null) { + errorMessage = AppLocalizations.of(currentContext!).connectionError; + } else if (sessionException is UnknownError && currentContext != null) { + if (sessionException.message != null && sessionException.code != null) { + errorMessage = '[${sessionException.code}] ${sessionException.message}'; + } else if (sessionException.message != null) { + errorMessage = sessionException.message!; + } else { + errorMessage = AppLocalizations.of(currentContext!).unknownError; } + } - logError('SessionController::_handleSessionFailure():errorMessage: $errorMessage'); - if (errorMessage.isNotEmpty && currentOverlayContext != null) { - _appToast.showToastErrorMessage(currentOverlayContext!, errorMessage); - } + logError('SessionController::_handleSessionFailure():errorMessage: $errorMessage'); + if (errorMessage.isNotEmpty && currentOverlayContext != null) { + _appToast.showToastErrorMessage(currentOverlayContext!, errorMessage); + } + + if (PlatformInfo.isMobile) { + _handleGetStoredSession(); + } else { + performInvokeLogoutAction(); } }