From 8cfe823d71c0809e028b665a8425aa12c5335896 Mon Sep 17 00:00:00 2001 From: Nazli Yurdakul Date: Fri, 1 Dec 2023 00:09:09 -0500 Subject: [PATCH 1/4] move onCreate call to MainApplication --- .../StripeTerminalReactNativeModule.kt | 9 +++- .../TerminalApplicationDelegate.kt | 15 ++++++ .../MainApplication.java | 47 ++++++++++++++++++- 3 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt diff --git a/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt b/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt index cf4c8e4a..6d308992 100644 --- a/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt +++ b/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.app.Application import android.content.ComponentCallbacks2 import android.content.res.Configuration +import android.util.Log import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContextBaseJavaModule @@ -81,6 +82,7 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) : get() = reactApplicationContext init { + Log.d(null, "init") context.registerComponentCallbacks( object : ComponentCallbacks2 { override fun onTrimMemory(level: Int) {} @@ -94,12 +96,16 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) : override fun getName(): String = "StripeTerminalReactNative" + + @OptIn(OfflineMode::class) @ReactMethod @Suppress("unused") fun initialize(params: ReadableMap, promise: Promise) = withExceptionResolver(promise) { - UiThreadUtil.runOnUiThread { onCreate(context.applicationContext as Application) } + Log.d("package name", context.applicationContext.packageName) + Log.d("application context", context.applicationContext.toString()) + Log.d("current activity", this.context.currentActivity.toString()) val result = if (!Terminal.isInitialized()) { Terminal.initTerminal( this.context.applicationContext, @@ -117,6 +123,7 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) : } } promise.resolve(result) + } @ReactMethod diff --git a/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt b/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt new file mode 100644 index 00000000..8d4fb966 --- /dev/null +++ b/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt @@ -0,0 +1,15 @@ +package com.stripeterminalreactnative + +import android.app.Application +import android.util.Log +import com.facebook.react.bridge.UiThreadUtil +import com.stripe.stripeterminal.TerminalApplicationDelegate + +object TerminalApplicationDelegate { + + @JvmStatic + fun onCreate(application: Application) { + Log.d("onCreate", application.toString()) + UiThreadUtil.runOnUiThread { TerminalApplicationDelegate.onCreate(application)} + } +} diff --git a/dev-app/android/app/src/main/java/com/dev/app/stripeterminalreactnative/MainApplication.java b/dev-app/android/app/src/main/java/com/dev/app/stripeterminalreactnative/MainApplication.java index 2f694c4d..a20a39c0 100644 --- a/dev-app/android/app/src/main/java/com/dev/app/stripeterminalreactnative/MainApplication.java +++ b/dev-app/android/app/src/main/java/com/dev/app/stripeterminalreactnative/MainApplication.java @@ -1,6 +1,13 @@ package com.dev.app.stripeterminalreactnative; +import android.app.Activity; import android.app.Application; +import android.os.Bundle; +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; import com.facebook.react.ReactNativeHost; @@ -10,8 +17,9 @@ import com.facebook.soloader.SoLoader; import java.util.List; import com.stripeterminalreactnative.StripeTerminalReactNativePackage; +import com.stripeterminalreactnative.TerminalApplicationDelegate; -public class MainApplication extends Application implements ReactApplication { +public class MainApplication extends Application implements ReactApplication, Application.ActivityLifecycleCallbacks { private final ReactNativeHost mReactNativeHost = new DefaultReactNativeHost(this) { @@ -54,6 +62,8 @@ public ReactNativeHost getReactNativeHost() { @Override public void onCreate() { super.onCreate(); + registerActivityLifecycleCallbacks(this); + TerminalApplicationDelegate.onCreate(this); SoLoader.init(this, /* native exopackage */ false); if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { // If you opted-in for the New Architecture, we load the native entry point for this app. @@ -61,4 +71,39 @@ public void onCreate() { } ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); } + + @Override + public void onActivityCreated(@NonNull final Activity activity, @Nullable final Bundle savedInstanceState) { + Log.d("onActivityCreated", activity.toString()); + } + + @Override + public void onActivityStarted(@NonNull final Activity activity) { + Log.d("onActivityStarted", activity.toString()); + } + + @Override + public void onActivityResumed(@NonNull final Activity activity) { + Log.d("onActivityResumed", activity.toString()); + } + + @Override + public void onActivityPaused(@NonNull final Activity activity) { + Log.d("onActivityPaused", activity.toString()); + } + + @Override + public void onActivityStopped(@NonNull final Activity activity) { + Log.d("onActivityStopped", activity.toString()); + } + + @Override + public void onActivitySaveInstanceState(@NonNull final Activity activity, @NonNull final Bundle outState) { + Log.d("onActivitySaveInstanceState", activity.toString()); + } + + @Override + public void onActivityDestroyed(@NonNull final Activity activity) { + Log.d("onActivityDestroyed", activity.toString()); + } } From 27d96b54ccdb7ad3bb06c07be035034d24744268 Mon Sep 17 00:00:00 2001 From: Ian Lin Date: Wed, 6 Dec 2023 14:15:37 +0800 Subject: [PATCH 2/4] remove runOnUiThread. --- .../stripeterminalreactnative/TerminalApplicationDelegate.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt b/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt index 8d4fb966..28f6a9b4 100644 --- a/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt +++ b/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt @@ -10,6 +10,6 @@ object TerminalApplicationDelegate { @JvmStatic fun onCreate(application: Application) { Log.d("onCreate", application.toString()) - UiThreadUtil.runOnUiThread { TerminalApplicationDelegate.onCreate(application)} + TerminalApplicationDelegate.onCreate(application) } } From 85149df66c69a4a438b2cfc33ea05106259f2396 Mon Sep 17 00:00:00 2001 From: Nazli Yurdakul Date: Fri, 1 Dec 2023 15:15:40 -0500 Subject: [PATCH 3/4] clean up --- .../StripeTerminalReactNativeModule.kt | 40 ++++++++--------- .../TerminalApplicationDelegate.kt | 2 - .../MainApplication.java | 45 +------------------ 3 files changed, 19 insertions(+), 68 deletions(-) diff --git a/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt b/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt index 6d308992..d90a2612 100644 --- a/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt +++ b/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt @@ -4,7 +4,6 @@ import android.annotation.SuppressLint import android.app.Application import android.content.ComponentCallbacks2 import android.content.res.Configuration -import android.util.Log import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContextBaseJavaModule @@ -82,7 +81,6 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) : get() = reactApplicationContext init { - Log.d(null, "init") context.registerComponentCallbacks( object : ComponentCallbacks2 { override fun onTrimMemory(level: Int) {} @@ -96,34 +94,32 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) : override fun getName(): String = "StripeTerminalReactNative" - - @OptIn(OfflineMode::class) @ReactMethod @Suppress("unused") fun initialize(params: ReadableMap, promise: Promise) = withExceptionResolver(promise) { - Log.d("package name", context.applicationContext.packageName) - Log.d("application context", context.applicationContext.toString()) - Log.d("current activity", this.context.currentActivity.toString()) - val result = if (!Terminal.isInitialized()) { - Terminal.initTerminal( - this.context.applicationContext, - mapToLogLevel(params.getString("logLevel")), - tokenProvider, - RNTerminalListener(context), - RNOfflineListener(context), - ) - NativeTypeFactory.writableNativeMap() - } else { - nativeMapOf { - terminal.connectedReader?.let { - putMap("reader", mapFromReader(it)) + UiThreadUtil.runOnUiThread { + onCreate(context.currentActivity?.application as Application) + + val result = if (!Terminal.isInitialized()) { + Terminal.initTerminal( + this.context.applicationContext, + mapToLogLevel(params.getString("logLevel")), + tokenProvider, + RNTerminalListener(context), + RNOfflineListener(context), + ) + NativeTypeFactory.writableNativeMap() + } else { + nativeMapOf { + terminal.connectedReader?.let { + putMap("reader", mapFromReader(it)) + } } } + promise.resolve(result) } - promise.resolve(result) - } @ReactMethod diff --git a/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt b/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt index 28f6a9b4..cbfbbb06 100644 --- a/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt +++ b/android/src/main/java/com/stripeterminalreactnative/TerminalApplicationDelegate.kt @@ -1,7 +1,6 @@ package com.stripeterminalreactnative import android.app.Application -import android.util.Log import com.facebook.react.bridge.UiThreadUtil import com.stripe.stripeterminal.TerminalApplicationDelegate @@ -9,7 +8,6 @@ object TerminalApplicationDelegate { @JvmStatic fun onCreate(application: Application) { - Log.d("onCreate", application.toString()) TerminalApplicationDelegate.onCreate(application) } } diff --git a/dev-app/android/app/src/main/java/com/dev/app/stripeterminalreactnative/MainApplication.java b/dev-app/android/app/src/main/java/com/dev/app/stripeterminalreactnative/MainApplication.java index a20a39c0..773e654a 100644 --- a/dev-app/android/app/src/main/java/com/dev/app/stripeterminalreactnative/MainApplication.java +++ b/dev-app/android/app/src/main/java/com/dev/app/stripeterminalreactnative/MainApplication.java @@ -1,13 +1,6 @@ package com.dev.app.stripeterminalreactnative; -import android.app.Activity; import android.app.Application; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; import com.facebook.react.ReactNativeHost; @@ -19,7 +12,7 @@ import com.stripeterminalreactnative.StripeTerminalReactNativePackage; import com.stripeterminalreactnative.TerminalApplicationDelegate; -public class MainApplication extends Application implements ReactApplication, Application.ActivityLifecycleCallbacks { +public class MainApplication extends Application implements ReactApplication { private final ReactNativeHost mReactNativeHost = new DefaultReactNativeHost(this) { @@ -62,7 +55,6 @@ public ReactNativeHost getReactNativeHost() { @Override public void onCreate() { super.onCreate(); - registerActivityLifecycleCallbacks(this); TerminalApplicationDelegate.onCreate(this); SoLoader.init(this, /* native exopackage */ false); if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { @@ -71,39 +63,4 @@ public void onCreate() { } ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); } - - @Override - public void onActivityCreated(@NonNull final Activity activity, @Nullable final Bundle savedInstanceState) { - Log.d("onActivityCreated", activity.toString()); - } - - @Override - public void onActivityStarted(@NonNull final Activity activity) { - Log.d("onActivityStarted", activity.toString()); - } - - @Override - public void onActivityResumed(@NonNull final Activity activity) { - Log.d("onActivityResumed", activity.toString()); - } - - @Override - public void onActivityPaused(@NonNull final Activity activity) { - Log.d("onActivityPaused", activity.toString()); - } - - @Override - public void onActivityStopped(@NonNull final Activity activity) { - Log.d("onActivityStopped", activity.toString()); - } - - @Override - public void onActivitySaveInstanceState(@NonNull final Activity activity, @NonNull final Bundle outState) { - Log.d("onActivitySaveInstanceState", activity.toString()); - } - - @Override - public void onActivityDestroyed(@NonNull final Activity activity) { - Log.d("onActivityDestroyed", activity.toString()); - } } From 95a3babc07773e530405541ed0a60f0ce8888ed8 Mon Sep 17 00:00:00 2001 From: Nazli Yurdakul Date: Fri, 22 Dec 2023 03:49:41 -0500 Subject: [PATCH 4/4] revert RNModule.kt changes --- .../StripeTerminalReactNativeModule.kt | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt b/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt index d90a2612..cf4c8e4a 100644 --- a/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt +++ b/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt @@ -98,28 +98,25 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) : @ReactMethod @Suppress("unused") fun initialize(params: ReadableMap, promise: Promise) = withExceptionResolver(promise) { - - UiThreadUtil.runOnUiThread { - onCreate(context.currentActivity?.application as Application) - - val result = if (!Terminal.isInitialized()) { - Terminal.initTerminal( - this.context.applicationContext, - mapToLogLevel(params.getString("logLevel")), - tokenProvider, - RNTerminalListener(context), - RNOfflineListener(context), - ) - NativeTypeFactory.writableNativeMap() - } else { - nativeMapOf { - terminal.connectedReader?.let { - putMap("reader", mapFromReader(it)) - } + UiThreadUtil.runOnUiThread { onCreate(context.applicationContext as Application) } + + val result = if (!Terminal.isInitialized()) { + Terminal.initTerminal( + this.context.applicationContext, + mapToLogLevel(params.getString("logLevel")), + tokenProvider, + RNTerminalListener(context), + RNOfflineListener(context), + ) + NativeTypeFactory.writableNativeMap() + } else { + nativeMapOf { + terminal.connectedReader?.let { + putMap("reader", mapFromReader(it)) } } - promise.resolve(result) } + promise.resolve(result) } @ReactMethod