From c9179b3e0a5c6d7fc87b9a65cf874c343926814c Mon Sep 17 00:00:00 2001
From: Taras <tarassmakula@gmail.com>
Date: Tue, 23 Aug 2022 18:25:46 +0300
Subject: [PATCH] Move logic from old login data source

---
 .../circles/feature/log_in/LoginDataSource.kt | 68 +++++--------------
 1 file changed, 17 insertions(+), 51 deletions(-)

diff --git a/app/src/main/java/org/futo/circles/feature/log_in/LoginDataSource.kt b/app/src/main/java/org/futo/circles/feature/log_in/LoginDataSource.kt
index b9d246f33..36df83076 100644
--- a/app/src/main/java/org/futo/circles/feature/log_in/LoginDataSource.kt
+++ b/app/src/main/java/org/futo/circles/feature/log_in/LoginDataSource.kt
@@ -1,63 +1,29 @@
 package org.futo.circles.feature.log_in
 
-import android.content.Context
-import android.net.Uri
-import org.futo.circles.R
 import org.futo.circles.core.utils.HomeServerUtils
-import org.futo.circles.core.matrix.pass_phrase.restore.RestorePassPhraseDataSource
-import org.futo.circles.core.matrix.room.CoreSpacesTreeBuilder
-import org.futo.circles.extensions.Response
 import org.futo.circles.extensions.createResult
+import org.futo.circles.feature.log_in.stages.LoginStagesDataSource
 import org.futo.circles.provider.MatrixInstanceProvider
-import org.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,
-    private val restorePassPhraseDataSource: RestorePassPhraseDataSource,
-    private val coreSpacesTreeBuilder: CoreSpacesTreeBuilder
+    private val loginStagesDataSource: LoginStagesDataSource
 ) {
 
-    val passPhraseLoadingLiveData = restorePassPhraseDataSource.loadingLiveData
-
-    suspend fun logIn(name: String, password: String): Response<Session> = createResult {
-        val session = MatrixInstanceProvider.matrix.authenticationService().directAuthentication(
-            homeServerConnectionConfig = buildHomeServerConfig(name),
-            matrixId = name,
-            password = password,
-            initialDeviceName = context.getString(
-                R.string.initial_device_name,
-                context.getString(R.string.app_name)
-            )
+    private val authService by lazy { MatrixInstanceProvider.matrix.authenticationService() }
+
+    suspend fun startLogin(
+        name: String
+    ) = createResult {
+        val homeServerUrl = HomeServerUtils.getHomeServerUrlFromDomain(domain)
+        authService.cancelPendingLoginOrRegistration()
+        authService.getLoginFlow(buildHomeServerConfig(homeServerUrl))
+        signUpDataSource.startSignUpStages(
+            it.flowResult.missingStages,
+            name,
+            password,
+            homeServerUrl,
+            isSubscription,
+            subscriptionReceipt
         )
-        MatrixSessionProvider.awaitForSessionSync(session)
-    }
-
-    suspend fun restoreKeys(password: String) = createResult {
-        restorePassPhraseDataSource.restoreKeysWithPassPhase(password)
-    }
-
-    suspend fun getEncryptionAlgorithm(): String? {
-        val algorithmResult = createResult { restorePassPhraseDataSource.getEncryptionAlgorithm() }
-
-       return when(algorithmResult){
-            is Response.Error -> null
-            is Response.Success -> algorithmResult.data
-        }
-    }
-
-    suspend fun createSpacesTree() = createResult {
-        coreSpacesTreeBuilder.createCoreSpacesTree()
-    }
-
-    fun isCirclesTreeCreated() = coreSpacesTreeBuilder.isCirclesHierarchyCreated()
-
-    private fun buildHomeServerConfig(userName: String): HomeServerConnectionConfig {
-        val url = HomeServerUtils.getHomeServerUrlFromUserName(userName)
-        return HomeServerConnectionConfig
-            .Builder()
-            .withHomeServerUri(Uri.parse(url))
-            .build()
     }
 }
\ No newline at end of file
-- 
GitLab