From 9296b8e758f28623b713fe8f58523535e29c263a Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Wed, 11 May 2022 13:38:48 +0300 Subject: [PATCH] Fix login error handle --- .../java/com/futo/circles/feature/log_in/LogInViewModel.kt | 7 +++++-- .../circles/feature/log_in/data_source/LoginDataSource.kt | 4 +++- .../com/futo/circles/provider/MatrixSessionProvider.kt | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/futo/circles/feature/log_in/LogInViewModel.kt b/app/src/main/java/com/futo/circles/feature/log_in/LogInViewModel.kt index a2a5ecc6d..8d4773fb2 100644 --- a/app/src/main/java/com/futo/circles/feature/log_in/LogInViewModel.kt +++ b/app/src/main/java/com/futo/circles/feature/log_in/LogInViewModel.kt @@ -19,8 +19,11 @@ class LogInViewModel( fun logIn(name: String, password: String) { launchBg { - loginResultLiveData.postValue(loginDataSource.logIn(name, password)) - restoreKeysLiveData.postValue(loginDataSource.restoreKeys(password)) + val loginResult = loginDataSource.logIn(name, password) + loginResultLiveData.postValue(loginResult) + (loginResult as? Response.Success)?.let { + restoreKeysLiveData.postValue(loginDataSource.restoreKeys(password)) + } } } diff --git a/app/src/main/java/com/futo/circles/feature/log_in/data_source/LoginDataSource.kt b/app/src/main/java/com/futo/circles/feature/log_in/data_source/LoginDataSource.kt index 86c129c86..df2ba6dd9 100644 --- a/app/src/main/java/com/futo/circles/feature/log_in/data_source/LoginDataSource.kt +++ b/app/src/main/java/com/futo/circles/feature/log_in/data_source/LoginDataSource.kt @@ -5,10 +5,12 @@ import android.net.Uri import com.futo.circles.BuildConfig import com.futo.circles.R import com.futo.circles.core.matrix.pass_phrase.restore.RestorePassPhraseDataSource +import com.futo.circles.extensions.Response import com.futo.circles.extensions.createResult import com.futo.circles.provider.MatrixInstanceProvider import com.futo.circles.provider.MatrixSessionProvider import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig +import org.matrix.android.sdk.api.session.Session class LoginDataSource( private val context: Context, @@ -28,7 +30,7 @@ class LoginDataSource( val passPhraseLoadingLiveData = restorePassPhraseDataSource.loadingLiveData - suspend fun logIn(name: String, password: String) = createResult { + suspend fun logIn(name: String, password: String): Response<Session> = createResult { val session = authService.directAuthentication( homeServerConnectionConfig = homeServerConnectionConfig, matrixId = name, diff --git a/app/src/main/java/com/futo/circles/provider/MatrixSessionProvider.kt b/app/src/main/java/com/futo/circles/provider/MatrixSessionProvider.kt index 4ecdb7706..e21995b41 100644 --- a/app/src/main/java/com/futo/circles/provider/MatrixSessionProvider.kt +++ b/app/src/main/java/com/futo/circles/provider/MatrixSessionProvider.kt @@ -18,8 +18,11 @@ object MatrixSessionProvider { ) ).also { MatrixInstanceProvider.saveMatrixInstance(it) } - val lastSession = + val lastSession = try { MatrixInstanceProvider.matrix.authenticationService().getLastAuthenticatedSession() + } catch (e: Exception) { + null + } lastSession?.let { startSession(it) } } -- GitLab