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