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:
dab246
2023-11-13 19:25:07 +07:00
committed by Dat Vu
parent 713c924c67
commit 4d89ab4783
2 changed files with 58 additions and 54 deletions
@@ -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();
}
}