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 a2a5ecc6d42ec95f7431064e40c0574afee7eb2e..8d4773fb2da572c71fe2f749edd50c14f8f00699 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 86c129c86a9ac9c6d7f53780ff6b256dd7f7f5a5..df2ba6dd967552f0df3d05a5cb18f8bf53c95006 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 4ecdb7706a79e2bc5058e6d309c49dc14e71a9d6..e21995b4147b7db2ed9c854aefc55efbbd64d5e7 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) }
     }