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) { 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",