Update billing client

This commit is contained in:
darken
2023-10-28 18:03:28 +02:00
committed by Matthias Urhahn
parent 06e67e04ac
commit 99fa99eba5
2 changed files with 18 additions and 8 deletions
+2 -2
View File
@@ -145,6 +145,6 @@ dependencies {
addTesting() addTesting()
"gplayImplementation"("com.android.billingclient:billing:5.1.0") "gplayImplementation"("com.android.billingclient:billing:6.0.1")
"gplayImplementation"("com.android.billingclient:billing-ktx:5.1.0") "gplayImplementation"("com.android.billingclient:billing-ktx:6.0.1")
} }
@@ -1,7 +1,13 @@
package eu.darken.capod.common.upgrade.core.client package eu.darken.capod.common.upgrade.core.client
import android.app.Activity import android.app.Activity
import com.android.billingclient.api.* import com.android.billingclient.api.AcknowledgePurchaseParams
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingFlowParams
import com.android.billingclient.api.BillingResult
import com.android.billingclient.api.ProductDetails
import com.android.billingclient.api.Purchase
import com.android.billingclient.api.QueryProductDetailsParams
import eu.darken.capod.common.debug.logging.Logging.Priority.INFO import eu.darken.capod.common.debug.logging.Logging.Priority.INFO
import eu.darken.capod.common.debug.logging.Logging.Priority.WARN import eu.darken.capod.common.debug.logging.Logging.Priority.WARN
import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.log
@@ -20,11 +26,15 @@ data class BillingClientConnection(
) { ) {
private val purchasesLocal = MutableStateFlow<Collection<Purchase>>(emptySet()) private val purchasesLocal = MutableStateFlow<Collection<Purchase>>(emptySet())
val purchases: Flow<Collection<Purchase>> = combine(purchasesGlobal, purchasesLocal) { global, local -> val purchases: Flow<Collection<Purchase>> = combine(purchasesGlobal, purchasesLocal) { global, local ->
val combined = mutableMapOf<String, Purchase>() val combined = mutableSetOf<Purchase>()
global.plus(local).toSet().sortedByDescending { it.purchaseTime }.forEach { purchase ->
combined[purchase.orderId] = purchase combined.addAll(local)
}
combined.values global
.let { purchases -> purchases.filter { it.purchaseState == Purchase.PurchaseState.PURCHASED } }
.let { combined.addAll(it) }
combined.sortedByDescending { it.purchaseTime }
} }
.setupCommonEventHandlers(TAG) { "purchases" } .setupCommonEventHandlers(TAG) { "purchases" }