@@ -32,8 +32,7 @@ class IapBillingService : Service(), PurchasesUpdatedListener, AcknowledgePurcha
3232 private lateinit var sharedPreferencesHandler: SharedPreferencesHandler
3333
3434 private val productDetailsMap = ConcurrentHashMap <String , ProductDetails >()
35- @Volatile
36- private var pendingProductDetailsCallback: ((List <ProductInfo >) -> Unit )? = null
35+ private val pendingProductDetailsCallbacks = mutableListOf< (List <ProductInfo >) -> Unit > ()
3736
3837 private fun initBillingClient (context : Context ) {
3938 this .sharedPreferencesHandler = SharedPreferencesHandler (context)
@@ -51,9 +50,12 @@ class IapBillingService : Service(), PurchasesUpdatedListener, AcknowledgePurcha
5150 if (billingResult.responseCode == BillingClient .BillingResponseCode .OK ) {
5251 Timber .tag(" IapBillingService" ).d(" Billing setup successful" )
5352 queryExistingPurchases()
54- pendingProductDetailsCallback?.let { callback ->
55- pendingProductDetailsCallback = null
56- queryProductDetails(callback)
53+ if (pendingProductDetailsCallbacks.isNotEmpty()) {
54+ val callbacks = ArrayList (pendingProductDetailsCallbacks)
55+ pendingProductDetailsCallbacks.clear()
56+ queryProductDetails { products ->
57+ callbacks.forEach { it(products) }
58+ }
5759 }
5860 } else {
5961 Timber .tag(" IapBillingService" ).e(" Billing setup not successful, error: %d" , billingResult.responseCode)
@@ -141,7 +143,7 @@ class IapBillingService : Service(), PurchasesUpdatedListener, AcknowledgePurcha
141143
142144 fun queryProductDetails (callback : (List <ProductInfo >) -> Unit ) {
143145 if (! billingClient.isReady) {
144- pendingProductDetailsCallback = callback
146+ pendingProductDetailsCallbacks.add( callback)
145147 return
146148 }
147149 val lock = Any ()
0 commit comments