From 2fd0fa7e224c6796680b916249957aec1213891c Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sun, 11 Dec 2022 18:51:56 +0100 Subject: [PATCH] update dependencies --- app/build.gradle | 4 +- .../evmap/viewmodel/DonateViewModel.kt | 58 +++++++++++-------- app/src/google/res/layout/item_donation.xml | 4 +- 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 130a76c5..186fb62a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -163,7 +163,7 @@ dependencies { implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.core:core-splashscreen:1.0.0' implementation "androidx.activity:activity-ktx:1.6.1" - implementation "androidx.fragment:fragment-ktx:1.5.4" + implementation "androidx.fragment:fragment-ktx:1.5.5" implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.preference:preference-ktx:1.2.0' implementation 'com.google.android.material:material:1.7.0' @@ -232,7 +232,7 @@ dependencies { implementation "androidx.room:room-ktx:$room_version" // billing library - def billing_version = "4.1.0" + def billing_version = "5.1.0" googleImplementation "com.android.billingclient:billing:$billing_version" googleImplementation "com.android.billingclient:billing-ktx:$billing_version" diff --git a/app/src/google/java/net/vonforst/evmap/viewmodel/DonateViewModel.kt b/app/src/google/java/net/vonforst/evmap/viewmodel/DonateViewModel.kt index 0fd3866f..73b6672a 100644 --- a/app/src/google/java/net/vonforst/evmap/viewmodel/DonateViewModel.kt +++ b/app/src/google/java/net/vonforst/evmap/viewmodel/DonateViewModel.kt @@ -5,6 +5,7 @@ import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData import com.android.billingclient.api.* +import com.android.billingclient.api.BillingClient.ProductType import net.vonforst.evmap.BuildConfig import net.vonforst.evmap.adapter.Equatable @@ -24,10 +25,15 @@ class DonateViewModel(application: Application) : AndroidViewModel(application), loadProducts() // consume pending purchases - val purchases = billingClient.queryPurchases(BillingClient.SkuType.INAPP) - purchases.purchasesList?.forEach { - if (!it.isAcknowledged) { - consumePurchase(it.purchaseToken, false) + billingClient.queryPurchasesAsync( + QueryPurchasesParams.newBuilder() + .setProductType(ProductType.INAPP) + .build() + ) { _, purchasesList -> + purchasesList.forEach { + if (!it.isAcknowledged) { + consumePurchase(it.purchaseToken, false) + } } } } @@ -36,26 +42,26 @@ class DonateViewModel(application: Application) : AndroidViewModel(application), } private fun loadProducts() { - val params = SkuDetailsParams.newBuilder() - .setType(BillingClient.SkuType.INAPP) - .setSkusList( - listOf( - "donate_1_eur", "donate_2_eur", "donate_5_eur", "donate_10_eur" - ) + - if (BuildConfig.DEBUG) { - listOf( - "android.test.purchased", "android.test.canceled", - "android.test.item_unavailable" - ) - } else { - emptyList() - } + val productIds = listOf( + "donate_1_eur", "donate_2_eur", "donate_5_eur", "donate_10_eur" + ) + if (BuildConfig.DEBUG) { + listOf( + "android.test.purchased", "android.test.canceled", + "android.test.item_unavailable" ) + } else { + emptyList() + } + val params = QueryProductDetailsParams.newBuilder() + .setProductList(productIds.map { + QueryProductDetailsParams.Product.newBuilder().setProductType(ProductType.INAPP) + .setProductId(it).build() + }) .build() - billingClient.querySkuDetailsAsync(params) { result, details -> - if (result.responseCode == BillingClient.BillingResponseCode.OK && details != null) { + billingClient.queryProductDetailsAsync(params) { result, details -> + if (result.responseCode == BillingClient.BillingResponseCode.OK) { products.postValue(Resource.success(details - .sortedBy { it.priceAmountMicros } + .sortedBy { it.oneTimePurchaseOfferDetails!!.priceAmountMicros } .map { DonationItem(it) } )) } else { @@ -97,7 +103,13 @@ class DonateViewModel(application: Application) : AndroidViewModel(application), fun startPurchase(it: DonationItem, activity: Activity) { val flowParams = BillingFlowParams.newBuilder() - .setSkuDetails(it.sku) + .setProductDetailsParamsList( + listOf( + BillingFlowParams.ProductDetailsParams.newBuilder() + .setProductDetails(it.product) + .build() + ) + ) .build() val response = billingClient.launchBillingFlow(activity, flowParams) if (response.responseCode != BillingClient.BillingResponseCode.OK) { @@ -110,4 +122,4 @@ class DonateViewModel(application: Application) : AndroidViewModel(application), } } -data class DonationItem(val sku: SkuDetails) : Equatable \ No newline at end of file +data class DonationItem(val product: ProductDetails) : Equatable \ No newline at end of file diff --git a/app/src/google/res/layout/item_donation.xml b/app/src/google/res/layout/item_donation.xml index c2b25d22..dad0a5c9 100644 --- a/app/src/google/res/layout/item_donation.xml +++ b/app/src/google/res/layout/item_donation.xml @@ -28,7 +28,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="8dp" - android:text="@{item.sku.title}" + android:text="@{item.product.title}" android:textAppearance="@style/TextAppearance.Material3.BodyLarge" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/textView21" @@ -41,7 +41,7 @@ android:id="@+id/textView21" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@{item.sku.price}" + android:text="@{item.product.oneTimePurchaseOfferDetails.formattedPrice}" android:textAppearance="@style/TextAppearance.Material3.BodyLarge" android:textColor="?android:textColorSecondary" app:layout_constraintBottom_toBottomOf="parent"