From 8d5d09131f18d227ff7eae0c8362f692e28a89ae Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 5 Jan 2026 10:56:45 +0000 Subject: [PATCH 1/2] Fix crash when drawer height is set to 100% The BottomSheetBehavior.halfExpandedRatio requires a value strictly between 0 and 1 (exclusive). When the editor allows setting height to 100%, the calculation would yield 1.0, causing an IllegalArgumentException. This fix clamps the ratio to the valid range (0.01 to 0.99). --- .../superwall/sdk/paywall/view/SuperwallPaywallActivity.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 0829e952..c3a9d020 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 @@ -520,8 +520,9 @@ class SuperwallPaywallActivity : AppCompatActivity() { val content = contentView as ViewGroup val bottomSheetBehavior = BottomSheetBehavior.from(content.getChildAt(0)) if (!isModal) { - bottomSheetBehavior.halfExpandedRatio = - (if (height > 1.0) height / 100 else height).toFloat() + // halfExpandedRatio must be strictly between 0 and 1 (exclusive) + val normalizedHeight = (if (height > 1.0) height / 100 else height).toFloat() + bottomSheetBehavior.halfExpandedRatio = normalizedHeight.coerceIn(0.01f, 0.99f) } else { // If it's a Modal, we want it to cover only 95% of the screen when expanded content.updateLayoutParams { From dcae7f4b00d8301c8532960836706128d58e5a93 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 5 Jan 2026 11:01:02 +0000 Subject: [PATCH 2/2] Update comment to explain why ratio is clamped --- .../com/superwall/sdk/paywall/view/SuperwallPaywallActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c3a9d020..0378e28b 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 @@ -520,8 +520,8 @@ class SuperwallPaywallActivity : AppCompatActivity() { val content = contentView as ViewGroup val bottomSheetBehavior = BottomSheetBehavior.from(content.getChildAt(0)) if (!isModal) { - // halfExpandedRatio must be strictly between 0 and 1 (exclusive) val normalizedHeight = (if (height > 1.0) height / 100 else height).toFloat() + // Clamp to (0, 1) since 0.0 = STATE_COLLAPSED and 1.0 = STATE_EXPANDED bottomSheetBehavior.halfExpandedRatio = normalizedHeight.coerceIn(0.01f, 0.99f) } else { // If it's a Modal, we want it to cover only 95% of the screen when expanded