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 681b9ea27006a0a9796097fcd91b1b04c3432bcf..6bbac319a6fe07b9046eb6a05cb6265eb5908916 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 7ce95fa1fbba880b04769398f3f6fa1bf1bda893..a2090033e2db22cc158e9398b4d40443c6ee566f 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 f9c16bb199bf80bb14b2bd2546aaaf4de1db1b85..e115434d27db79b372d7e000d3205469165b5535 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