TF-2311 Always get session from cache when get session from server failure on mobile
Signed-off-by: dab246 <tdvu@linagora.com> Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit 1c8d61b6d7871ce8685077e86389217e29eab7d9)
This commit is contained in:
@@ -94,6 +94,7 @@ abstract class BaseController extends GetxController
|
|||||||
(failure) {
|
(failure) {
|
||||||
if (failure is FeatureFailure) {
|
if (failure is FeatureFailure) {
|
||||||
final exception = _performFilterExceptionInError(failure.exception);
|
final exception = _performFilterExceptionInError(failure.exception);
|
||||||
|
logError('BaseController::onData:exception: $exception');
|
||||||
if (exception != null) {
|
if (exception != null) {
|
||||||
handleExceptionAction(failure: failure, exception: exception);
|
handleExceptionAction(failure: failure, exception: exception);
|
||||||
} else {
|
} else {
|
||||||
@@ -121,42 +122,33 @@ abstract class BaseController extends GetxController
|
|||||||
Exception? _performFilterExceptionInError(dynamic error) {
|
Exception? _performFilterExceptionInError(dynamic error) {
|
||||||
logError('BaseController::_performFilterExceptionInError(): $error');
|
logError('BaseController::_performFilterExceptionInError(): $error');
|
||||||
if (error is NoNetworkError || error is ConnectionTimeout || error is InternalServerError) {
|
if (error is NoNetworkError || error is ConnectionTimeout || error is InternalServerError) {
|
||||||
logError('BaseController::_performFilterExceptionInError(): NoNetworkError');
|
if (PlatformInfo.isWeb && currentOverlayContext != null && currentContext != null) {
|
||||||
if (PlatformInfo.isWeb) {
|
_appToast.showToastMessage(
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
currentOverlayContext!,
|
||||||
_appToast.showToastMessage(
|
AppLocalizations.of(currentContext!).no_internet_connection,
|
||||||
currentOverlayContext!,
|
actionName: AppLocalizations.of(currentContext!).skip,
|
||||||
AppLocalizations.of(currentContext!).no_internet_connection,
|
onActionClick: ToastView.dismiss,
|
||||||
actionName: AppLocalizations.of(currentContext!).skip,
|
leadingSVGIcon: _imagePaths.icNotConnection,
|
||||||
onActionClick: ToastView.dismiss,
|
backgroundColor: AppColor.textFieldErrorBorderColor,
|
||||||
leadingSVGIcon: _imagePaths.icNotConnection,
|
textColor: Colors.white,
|
||||||
backgroundColor: AppColor.textFieldErrorBorderColor,
|
infinityToast: true,
|
||||||
textColor: Colors.white,
|
);
|
||||||
infinityToast: true,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return error;
|
return error;
|
||||||
} else if (error is BadCredentialsException) {
|
} else if (error is BadCredentialsException) {
|
||||||
logError('BaseController::_performFilterExceptionInError(): BadCredentialsException');
|
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
_appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).badCredentials);
|
AppLocalizations.of(currentContext!).badCredentials
|
||||||
}
|
);
|
||||||
if (authorizationInterceptors.isAppRunning) {
|
|
||||||
performInvokeLogoutAction();
|
|
||||||
}
|
}
|
||||||
return error;
|
return error;
|
||||||
} else if (error is ConnectionError) {
|
} else if (error is ConnectionError) {
|
||||||
logError('BaseController::_performFilterExceptionInError(): ConnectionError');
|
if (authorizationInterceptors.isAppRunning && currentOverlayContext != null && currentContext != null) {
|
||||||
if (authorizationInterceptors.isAppRunning) {
|
_appToast.showToastErrorMessage(
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
currentOverlayContext!,
|
||||||
_appToast.showToastErrorMessage(
|
AppLocalizations.of(currentContext!).connectionError
|
||||||
currentOverlayContext!,
|
);
|
||||||
AppLocalizations.of(currentContext!).connectionError);
|
|
||||||
}
|
|
||||||
performInvokeLogoutAction();
|
|
||||||
}
|
}
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@@ -168,6 +160,12 @@ abstract class BaseController extends GetxController
|
|||||||
|
|
||||||
void handleExceptionAction({Failure? failure, Exception? exception}) {
|
void handleExceptionAction({Failure? failure, Exception? exception}) {
|
||||||
logError('BaseController::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) {
|
void handleFailureViewState(Failure failure) {
|
||||||
|
|||||||
@@ -53,9 +53,12 @@ class SessionController extends ReloadableController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void handleFailureViewState(Failure failure) {
|
void handleFailureViewState(Failure failure) {
|
||||||
super.handleFailureViewState(failure);
|
|
||||||
if (failure is GetSessionFailure) {
|
if (failure is GetSessionFailure) {
|
||||||
_handleSessionFailure(failure);
|
_handleSessionFailure(failure);
|
||||||
|
} if (failure is GetStoredSessionFailure) {
|
||||||
|
_handleSessionFailure(failure);
|
||||||
|
} else {
|
||||||
|
super.handleFailureViewState(failure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,9 +74,10 @@ class SessionController extends ReloadableController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void handleExceptionAction({Failure? failure, Exception? exception}) {
|
void handleExceptionAction({Failure? failure, Exception? exception}) {
|
||||||
super.handleExceptionAction(failure: failure, exception: exception);
|
if (PlatformInfo.isMobile && failure is GetSessionFailure) {
|
||||||
if (PlatformInfo.isMobile && failure is GetSessionFailure && exception is NoNetworkError) {
|
|
||||||
_handleGetStoredSession();
|
_handleGetStoredSession();
|
||||||
|
} else {
|
||||||
|
super.handleExceptionAction(failure: failure, exception: exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +89,6 @@ class SessionController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _handleGetStoredSession() {
|
void _handleGetStoredSession() {
|
||||||
log('SessionController::_handleGetStoredSession():');
|
|
||||||
consumeState(_getStoredSessionInteractor.execute());
|
consumeState(_getStoredSessionInteractor.execute());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,31 +96,34 @@ class SessionController extends ReloadableController {
|
|||||||
consumeState(_getSessionInteractor.execute());
|
consumeState(_getSessionInteractor.execute());
|
||||||
}
|
}
|
||||||
|
|
||||||
void _handleSessionFailure(Failure failure) {
|
void _handleSessionFailure(FeatureFailure failure) {
|
||||||
log('SessionController::_handleSessionFailure(): $failure');
|
final sessionException = failure.exception;
|
||||||
if (failure is GetSessionFailure) {
|
var errorMessage = '';
|
||||||
final sessionException = failure.exception;
|
if (_checkUrlError(sessionException) && currentContext != null) {
|
||||||
var errorMessage = '';
|
errorMessage = AppLocalizations.of(currentContext!).wrongUrlMessage;
|
||||||
if (_checkUrlError(sessionException) && currentContext != null) {
|
} else if (sessionException is BadCredentialsException && currentContext != null) {
|
||||||
errorMessage = AppLocalizations.of(currentContext!).wrongUrlMessage;
|
errorMessage = AppLocalizations.of(currentContext!).badCredentials;
|
||||||
} else if (sessionException is BadCredentialsException && currentContext != null) {
|
} else if (sessionException is ConnectionError && currentContext != null) {
|
||||||
errorMessage = AppLocalizations.of(currentContext!).badCredentials;
|
errorMessage = AppLocalizations.of(currentContext!).connectionError;
|
||||||
} else if (sessionException is ConnectionError && currentContext != null) {
|
} else if (sessionException is UnknownError && currentContext != null) {
|
||||||
errorMessage = AppLocalizations.of(currentContext!).connectionError;
|
if (sessionException.message != null && sessionException.code != null) {
|
||||||
} else if (sessionException is UnknownError && currentContext != null) {
|
errorMessage = '[${sessionException.code}] ${sessionException.message}';
|
||||||
if (sessionException.message != null && sessionException.code != null) {
|
} else if (sessionException.message != null) {
|
||||||
errorMessage = '[${sessionException.code}] ${sessionException.message}';
|
errorMessage = sessionException.message!;
|
||||||
} else if (sessionException.message != null) {
|
} else {
|
||||||
errorMessage = sessionException.message!;
|
errorMessage = AppLocalizations.of(currentContext!).unknownError;
|
||||||
} else {
|
|
||||||
errorMessage = AppLocalizations.of(currentContext!).unknownError;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
logError('SessionController::_handleSessionFailure():errorMessage: $errorMessage');
|
logError('SessionController::_handleSessionFailure():errorMessage: $errorMessage');
|
||||||
if (errorMessage.isNotEmpty && currentOverlayContext != null) {
|
if (errorMessage.isNotEmpty && currentOverlayContext != null) {
|
||||||
_appToast.showToastErrorMessage(currentOverlayContext!, errorMessage);
|
_appToast.showToastErrorMessage(currentOverlayContext!, errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PlatformInfo.isMobile) {
|
||||||
|
_handleGetStoredSession();
|
||||||
|
} else {
|
||||||
|
performInvokeLogoutAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user