From 07340c1074c3830c45d9298f5d858fedff984b3c Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Fri, 5 Aug 2022 17:08:27 +0300 Subject: [PATCH] Add subscription manager to fragment --- .../SubscriptionStageFragment.kt | 36 +++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) 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 d83370188..a460da3cc 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 @@ -7,8 +7,10 @@ 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.futo.circles.extensions.showError import org.futo.circles.feature.sign_up.subscription_stage.list.SubscriptionsAdapter -import org.futo.circles.subscriptions.SubscriptionData +import org.futo.circles.subscriptions.ItemPurchasedListener +import org.futo.circles.subscriptions.google.GoogleSubscriptionsManager import org.koin.androidx.viewmodel.ext.android.viewModel class SubscriptionStageFragment : @@ -17,12 +19,30 @@ class SubscriptionStageFragment : private val binding by viewBinding(SubscriptionStageFragmentBinding::bind) private val viewModel by viewModel<SubscriptionStageViewModel>() - private val listAdapter by lazy { - SubscriptionsAdapter( - onItemClicked = { data -> onSubscriptionSelected(data) }, + private val subscriptionManager by lazy { + GoogleSubscriptionsManager( + requireActivity(), object : ItemPurchasedListener { + override fun onItemPurchased(purchase: String) { + viewModel.validateSubscriptionReceipt(purchase) + } + + override fun onPurchaseFailed(errorCode: Int) { + showError(getString(R.string.purchase_failed_format, errorCode)) + } + + } ) } + private val listAdapter by lazy { + SubscriptionsAdapter(onItemClicked = { id -> onSubscriptionSelected(id) }) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + viewModel.loadSubscriptionsList(subscriptionManager) + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setupViews() @@ -35,9 +55,13 @@ class SubscriptionStageFragment : private fun setupObservers() { viewModel.subscribeLiveData.observeResponse(this) + viewModel.purchaseLiveData.observeResponse(this) + viewModel.subscriptionsListLiveData.observeResponse(this, success = { + listAdapter.submitList(it) + }) } - private fun onSubscriptionSelected(subscriptionData: SubscriptionData) { - + private fun onSubscriptionSelected(productId: String) { + viewModel.purchaseProduct(subscriptionManager, productId) } } \ No newline at end of file -- GitLab