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