Better merging of purchase data emissions

This commit is contained in:
darken
2022-01-17 10:19:12 +01:00
parent 3ebf1182f8
commit c3e9053cdd
@@ -18,12 +18,12 @@ data class BillingClientConnection(
private val purchasesGlobal: Flow<Collection<Purchase>>, private val purchasesGlobal: Flow<Collection<Purchase>>,
) { ) {
private val purchasesLocal = MutableStateFlow<Collection<Purchase>>(emptySet()) private val purchasesLocal = MutableStateFlow<Collection<Purchase>>(emptySet())
val purchases: Flow<Collection<Purchase>> = combine( val purchases: Flow<Collection<Purchase>> = combine(purchasesGlobal, purchasesLocal) { global, local ->
purchasesGlobal, val combined = mutableMapOf<String, Purchase>()
purchasesLocal global.plus(local).toSet().sortedByDescending { it.purchaseTime }.forEach { purchase ->
) { global, local -> combined[purchase.orderId] = purchase
// TODO how to prevent duplicates? }
global.plus(local) combined.values
} }
.setupCommonEventHandlers(TAG) { "purchases" } .setupCommonEventHandlers(TAG) { "purchases" }