From c3e9053cdd0da719dfd55fa9ac50ec905306bcc4 Mon Sep 17 00:00:00 2001 From: darken Date: Mon, 17 Jan 2022 10:19:12 +0100 Subject: [PATCH] Better merging of purchase data emissions --- .../upgrade/core/client/BillingClientConnection.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/gplay/java/eu/darken/capod/common/upgrade/core/client/BillingClientConnection.kt b/app/src/gplay/java/eu/darken/capod/common/upgrade/core/client/BillingClientConnection.kt index 9a6c82ea..0d524f20 100644 --- a/app/src/gplay/java/eu/darken/capod/common/upgrade/core/client/BillingClientConnection.kt +++ b/app/src/gplay/java/eu/darken/capod/common/upgrade/core/client/BillingClientConnection.kt @@ -18,12 +18,12 @@ data class BillingClientConnection( private val purchasesGlobal: Flow>, ) { private val purchasesLocal = MutableStateFlow>(emptySet()) - val purchases: Flow> = combine( - purchasesGlobal, - purchasesLocal - ) { global, local -> - // TODO how to prevent duplicates? - global.plus(local) + val purchases: Flow> = combine(purchasesGlobal, purchasesLocal) { global, local -> + val combined = mutableMapOf() + global.plus(local).toSet().sortedByDescending { it.purchaseTime }.forEach { purchase -> + combined[purchase.orderId] = purchase + } + combined.values } .setupCommonEventHandlers(TAG) { "purchases" }