From 9eea9e317f5a1e9749e284c72ea3857f1e5f6e9f Mon Sep 17 00:00:00 2001 From: christine Date: Wed, 3 Sep 2025 13:26:42 +0300 Subject: [PATCH 1/2] sc-167747:Refactor showInAppMessage to properly handle suspend function --- android/build.gradle | 2 + .../com/rnmovableink/RNMovableInkModule.kt | 40 +++++++++++++------ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 8ca15c0..4c27114 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -98,6 +98,8 @@ dependencies { implementation "com.facebook.react:react-native:+" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "com.movableink.sdk:inked:2.1.0" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.7.0" + } if (isNewArchitectureEnabled()) { diff --git a/android/src/main/java/com/rnmovableink/RNMovableInkModule.kt b/android/src/main/java/com/rnmovableink/RNMovableInkModule.kt index 12ad453..ed4d899 100644 --- a/android/src/main/java/com/rnmovableink/RNMovableInkModule.kt +++ b/android/src/main/java/com/rnmovableink/RNMovableInkModule.kt @@ -5,6 +5,9 @@ import com.facebook.react.bridge.Callback import com.movableink.inked.MIClient import com.movableink.inked.MIClient.setMIU import com.movableink.inked.inAppMessage.MovableInAppClient +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.lifecycleScope +import kotlinx.coroutines.launch class RNMovableInkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { @@ -30,7 +33,7 @@ class RNMovableInkModule(reactContext: ReactApplicationContext) : @ReactMethod fun identifyUser() { - + } @ReactMethod @@ -82,20 +85,31 @@ class RNMovableInkModule(reactContext: ReactApplicationContext) : } } - @ReactMethod - fun showInAppMessage(url: String, callback: Callback) { - currentActivity?.runOnUiThread { - MIClient.showInAppBrowser( - currentActivity!!, - url, - listener = object : MovableInAppClient.OnUrlLoadingListener { - override fun onButtonClicked(value: String) { - callback.invoke(value) +@ReactMethod +fun showInAppMessage(url: String, callback: Callback) { + val activity = currentActivity + if (activity is androidx.lifecycle.LifecycleOwner) { + activity.lifecycleScope.launch { + try { + MIClient.showInAppBrowser( + activity, + url, + listener = object : MovableInAppClient.OnUrlLoadingListener { + override fun onButtonClicked(value: String) { + activity.runOnUiThread { + callback.invoke(value) + } + } + } + ) + } catch (e: Exception) { + activity.runOnUiThread { + callback.invoke("Error: ${e.message}") + } } - }, - ) + } } - } +} @ReactMethod fun setValidPasteboardValues(values: ReadableArray) { From a33e33f28dff3675bfe9e967de67d5c1b071c13c Mon Sep 17 00:00:00 2001 From: Chayel J Heinsen Date: Wed, 3 Sep 2025 09:43:52 -0400 Subject: [PATCH 2/2] Update version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f15b996..92994e7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@movable/react-native-sdk", - "version": "2.1.0", + "version": "2.1.1", "description": "MovableInk React Native SDK", "main": "lib/commonjs/index", "module": "lib/module/index",