diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/view/SuperwallPaywallActivity.kt b/superwall/src/main/java/com/superwall/sdk/paywall/view/SuperwallPaywallActivity.kt index 592e5217..9a18a892 100644 --- a/superwall/src/main/java/com/superwall/sdk/paywall/view/SuperwallPaywallActivity.kt +++ b/superwall/src/main/java/com/superwall/sdk/paywall/view/SuperwallPaywallActivity.kt @@ -448,7 +448,12 @@ class SuperwallPaywallActivity : AppCompatActivity() { initBottomSheetBehavior(isModal, height) val container = activityView.findViewById(com.superwall.sdk.R.id.container) - activityView.setOnClickListener { finish() } + activityView.setOnClickListener { + paywallView()?.dismiss( + result = PaywallResult.Declined(), + closeReason = PaywallCloseReason.ManualClose, + ) ?: finish() + } container.addView(paywallView) container.requestLayout() val radius = diff --git a/superwall/src/main/java/com/superwall/sdk/store/StoreManager.kt b/superwall/src/main/java/com/superwall/sdk/store/StoreManager.kt index d71b5699..06262319 100644 --- a/superwall/src/main/java/com/superwall/sdk/store/StoreManager.kt +++ b/superwall/src/main/java/com/superwall/sdk/store/StoreManager.kt @@ -22,6 +22,7 @@ import com.superwall.sdk.store.testmode.TestModeManager import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.awaitAll import java.util.Date +import java.util.concurrent.ConcurrentHashMap class StoreManager( val purchaseController: InternalPurchaseController, @@ -35,7 +36,7 @@ class StoreManager( StoreKit { val receiptManager by lazy(receiptManagerFactory) - private var productsByFullId: MutableMap = java.util.concurrent.ConcurrentHashMap() + private var productsByFullId: ConcurrentHashMap = ConcurrentHashMap() private data class ProductProcessingResult( val fullProductIdsToLoad: Set, @@ -148,6 +149,7 @@ class StoreManager( is ProductState.Loading -> { if (id !in newDeferreds) loading.add(state.deferred) } + is ProductState.Error -> { // Error state already exists — replace atomically for retry val deferred = CompletableDeferred()