From 13477f438ca8d0aa5ada6b616a49874f913f99fc Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Thu, 4 Aug 2022 16:45:32 +0300 Subject: [PATCH] Add logic to path subscription stage --- .../SubscriptionStageDataSource.kt | 32 ++++++++++++++++++- .../SubscriptionStageFragment.kt | 3 +- .../SubscriptionStageViewModel.kt | 17 +++++++++- 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageDataSource.kt b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageDataSource.kt index 681b9ea27..6bbac319a 100644 --- a/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageDataSource.kt +++ b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageDataSource.kt @@ -1,4 +1,34 @@ package org.futo.circles.feature.sign_up.subscription_stage -class SubscriptionStageDataSource { +import org.futo.circles.extensions.Response +import org.futo.circles.extensions.createResult +import org.futo.circles.feature.sign_up.SignUpDataSource +import org.futo.circles.provider.MatrixInstanceProvider +import org.matrix.android.sdk.api.auth.registration.RegistrationResult +import org.matrix.android.sdk.api.auth.registration.Stage + +class SubscriptionStageDataSource( + private val signUpDataSource: SignUpDataSource +) { + + private val wizard by lazy { + MatrixInstanceProvider.matrix.authenticationService().getRegistrationWizard() + } + + suspend fun validateSubscriptionReceipt(receipt: String): Response<RegistrationResult> { + val type = (signUpDataSource.currentStage as? Stage.Other)?.type ?: "" + + val result = createResult { + wizard.registrationCustom( + mapOf( + "type" to type, + "product" to receipt + ) + ) + } + + (result as? Response.Success)?.let { signUpDataSource.stageCompleted(result.data) } + + return result + } } \ No newline at end of file diff --git a/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageFragment.kt b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageFragment.kt index 7ce95fa1f..a2090033e 100644 --- a/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageFragment.kt @@ -6,6 +6,7 @@ import by.kirich1409.viewbindingdelegate.viewBinding import org.futo.circles.R import org.futo.circles.core.fragment.ParentBackPressOwnerFragment import org.futo.circles.databinding.SubscriptionStageFragmentBinding +import org.futo.circles.extensions.observeResponse import org.koin.androidx.viewmodel.ext.android.viewModel class SubscriptionStageFragment : @@ -27,6 +28,6 @@ class SubscriptionStageFragment : } private fun setupObservers() { - + viewModel.subscribeLiveData.observeResponse(this) } } \ No newline at end of file diff --git a/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt index f9c16bb19..e115434d2 100644 --- a/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt +++ b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt @@ -1,6 +1,21 @@ package org.futo.circles.feature.sign_up.subscription_stage import androidx.lifecycle.ViewModel +import org.futo.circles.core.SingleEventLiveData +import org.futo.circles.extensions.Response +import org.futo.circles.extensions.launchBg +import org.matrix.android.sdk.api.auth.registration.RegistrationResult + +class SubscriptionStageViewModel( + private val dataSource: SubscriptionStageDataSource +) : ViewModel() { + + val subscribeLiveData = SingleEventLiveData<Response<RegistrationResult>>() + + fun validateSubscriptionReceipt(receipt: String) { + launchBg { + subscribeLiveData.postValue(dataSource.validateSubscriptionReceipt(receipt)) + } + } -class SubscriptionStageViewModel:ViewModel() { } \ No newline at end of file -- GitLab