From 621eedadd172eef5235c99327f4ae5a44087752a Mon Sep 17 00:00:00 2001 From: Mygod Date: Sun, 15 May 2022 15:47:35 -0400 Subject: [PATCH] Migrate billing lib updates --- .../java/be/mygod/vpnhotspot/EBegFragment.kt | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/EBegFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/EBegFragment.kt index 66b37dbf..afcab8ce 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/EBegFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/EBegFragment.kt @@ -35,7 +35,9 @@ class EBegFragment : AppCompatDialogFragment() { if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) { Timber.e("onBillingSetupFinished: ${billingResult.responseCode}") } else GlobalScope.launch(Dispatchers.Main.immediate) { - val result = billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP) + val result = billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder().apply { + setProductType(BillingClient.ProductType.INAPP) + }.build()) onPurchasesUpdated(result.billingResult, result.purchasesList) } } @@ -64,12 +66,12 @@ class EBegFragment : AppCompatDialogFragment() { } private lateinit var binding: FragmentEbegBinding - private var skus: List? = null + private var productDetails: List? = null set(value) { field = value binding.donationsGoogleAndroidMarketSpinner.apply { val adapter = ArrayAdapter(context ?: return, android.R.layout.simple_spinner_item, - value?.map { it.price } ?: listOf("…")) + value?.map { it.oneTimePurchaseOfferDetails?.formattedPrice } ?: listOf("…")) adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) setAdapter(adapter) } @@ -83,21 +85,29 @@ class EBegFragment : AppCompatDialogFragment() { super.onViewCreated(view, savedInstanceState) dialog!!.setTitle(R.string.settings_misc_donate) viewLifecycleOwner.lifecycleScope.launchWhenCreated { - billingClient.querySkuDetails(SkuDetailsParams.newBuilder().apply { - setSkusList(listOf("donate001", "donate002", "donate005", "donate010", "donate020", "donate050", - "donate100", "donate200", "donatemax")) - setType(BillingClient.SkuType.INAPP) + billingClient.queryProductDetails(QueryProductDetailsParams.newBuilder().apply { + setProductList(listOf( + "donate001", "donate002", "donate005", "donate010", "donate020", "donate050", + "donate100", "donate200", "donatemax", + ).map { + QueryProductDetailsParams.Product.newBuilder().apply { + setProductId(it) + setProductType(BillingClient.ProductType.INAPP) + }.build() + }) }.build()).apply { - if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) skus = skuDetailsList else { - Timber.e("onSkuDetailsResponse: ${billingResult.responseCode}") + if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) { + Timber.e("queryProductDetails: ${billingResult.responseCode}") SmartSnackbar.make(R.string.donations__google_android_market_not_supported).show() - } + } else productDetails = productDetailsList } } binding.donationsGoogleAndroidMarketDonateButton.setOnClickListener { - val sku = skus?.getOrNull(binding.donationsGoogleAndroidMarketSpinner.selectedItemPosition) - if (sku != null) billingClient.launchBillingFlow(requireActivity(), BillingFlowParams.newBuilder().apply { - setSkuDetails(sku) + val product = productDetails?.getOrNull(binding.donationsGoogleAndroidMarketSpinner.selectedItemPosition) + if (product != null) billingClient.launchBillingFlow(requireActivity(), BillingFlowParams.newBuilder().apply { + setProductDetailsParamsList(listOf(BillingFlowParams.ProductDetailsParams.newBuilder().apply { + setProductDetails(product) + }.build())) }.build()) else SmartSnackbar.make(R.string.donations__google_android_market_not_supported).show() } @Suppress("ConstantConditionIf")