From d6775572b0ea6432d011637f47d75a22f29b88d0 Mon Sep 17 00:00:00 2001 From: Rodrigo Gomez Palacio <11739227+rgomezp@users.noreply.github.com> Date: Fri, 20 Jun 2025 16:57:51 -0500 Subject: [PATCH] Make sure presentPaywallFromFragment runs on the main thread --- .../purchases/react/ui/RNPaywallsModule.kt | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/react-native-purchases-ui/android/src/main/java/com/revenuecat/purchases/react/ui/RNPaywallsModule.kt b/react-native-purchases-ui/android/src/main/java/com/revenuecat/purchases/react/ui/RNPaywallsModule.kt index 0044a129f..dfbcbe403 100644 --- a/react-native-purchases-ui/android/src/main/java/com/revenuecat/purchases/react/ui/RNPaywallsModule.kt +++ b/react-native-purchases-ui/android/src/main/java/com/revenuecat/purchases/react/ui/RNPaywallsModule.kt @@ -79,16 +79,19 @@ internal class RNPaywallsModule( } private fun presentPaywall( - requiredEntitlementIdentifier: String?, - offeringIdentifier: String?, - displayCloseButton: Boolean?, - fontFamilyName: String?, - promise: Promise + requiredEntitlementIdentifier: String?, + offeringIdentifier: String?, + displayCloseButton: Boolean?, + fontFamilyName: String?, + promise: Promise ) { - val activity = currentFragmentActivity ?: return - val fontFamily = fontFamilyName?.let { - FontAssetManager.getPaywallFontFamily(fontFamilyName = it, activity.resources.assets) - } + val activity = currentFragmentActivity ?: return + val fontFamily = fontFamilyName?.let { + FontAssetManager.getPaywallFontFamily(fontFamilyName = it, activity.resources.assets) + } + + // Ensure the paywall presentation runs on the main thread + activity.runOnUiThread { presentPaywallFromFragment( activity = activity, PresentPaywallOptions( @@ -106,4 +109,5 @@ internal class RNPaywallsModule( ) ) } + } }