From d00e31d78d2b1bf900c05bca27bbbcfc44ca3aed Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 21 Aug 2025 15:38:37 -0700 Subject: [PATCH 01/11] refactor: split packages between old and new architecture --- .../reactnative/RNIterableAPIPackage.java | 46 +++- .../com/reactnative/RNIterableAPIModule.java | 236 ++++++++++++++++++ .../com}/reactnative/RNIterableAPIModule.java | 0 3 files changed, 270 insertions(+), 12 deletions(-) create mode 100644 android/src/newarch/java/com/reactnative/RNIterableAPIModule.java rename android/src/{main/java/com/iterable => oldarch/java/com}/reactnative/RNIterableAPIModule.java (100%) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java index 2b04e447c..c64a3d1f6 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java @@ -3,27 +3,49 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; -import com.facebook.react.ReactPackage; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.JavaScriptModule; // TODO: instructrions says to remove import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.module.model.ReactModuleInfo; +import com.facebook.react.module.model.ReactModuleInfoProvider; +import com.facebook.react.ReactPackage; // TODO: instructrions says to remove +import com.facebook.react.TurboReactPackage; import com.facebook.react.uimanager.ViewManager; -import com.facebook.react.bridge.JavaScriptModule; -public class RNIterableAPIPackage implements ReactPackage { - @Override - public List createNativeModules( - ReactApplicationContext reactContext) { - List modules = new ArrayList<>(); - - modules.add(new RNIterableAPIModule(reactContext)); - return modules; +public class RNIterableAPIPackage extends TurboReactPackage { + @Nullable + @Override + public NativeModule getModule(String name, ReactApplicationContext reactContext) { + if (name.equals(RNIterableAPIModuleImpl.NAME)) { + return new RNIterableAPIModule(reactContext); + } else { + return null; + } } @Override - public List createViewManagers(ReactApplicationContext reactContext) { - return Collections.emptyList(); + public ReactModuleInfoProvider getReactModuleInfoProvider() { + return () -> { + final Map moduleInfos = new HashMap<>(); + boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + moduleInfos.put( + RNIterableAPIModuleImpl.NAME, + new ReactModuleInfo( + RNIterableAPIModuleImpl.NAME, + RNIterableAPIModuleImpl.NAME, + false, // canOverrideExistingModule + false, // needsEagerInit + true, // hasConstants + false, // isCxxModule + isTurboModule // isTurboModule + )); + return moduleInfos; + }; } } diff --git a/android/src/newarch/java/com/reactnative/RNIterableAPIModule.java b/android/src/newarch/java/com/reactnative/RNIterableAPIModule.java new file mode 100644 index 000000000..f885b133a --- /dev/null +++ b/android/src/newarch/java/com/reactnative/RNIterableAPIModule.java @@ -0,0 +1,236 @@ +package com.iterable.reactnative; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.Callback; +import com.facebook.react.bridge.NativeModule; +import com.facebook.react.bridge.Promise; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.ReadableMap; +import java.util.Map; +import java.util.HashMap; + +public class RNIterableAPIModule extends NativeRNIterableAPISpec { + private final ReactApplicationContext reactContext; + private static RNIterableAPIModuleImpl moduleImpl; + + RNIterableAPIModule(ReactApplicationContext context) { + super(context); + this.reactContext = context; + if (moduleImpl == null) { + moduleImpl = new RNIterableAPIModuleImpl(reactContext); + } + } + + @Override + @NonNull + public String getName() { + return RNIterableAPIModuleImpl.NAME; + } + + @Override + public void initializeWithApiKey(String apiKey, ReadableMap configReadableMap, String version, Promise promise) { + moduleImpl.initializeWithApiKey(apiKey, configReadableMap, version, promise); + } + + @Override + public void initialize2WithApiKey(String apiKey, ReadableMap configReadableMap, String apiEndPointOverride, String version, Promise promise) { + moduleImpl.initialize2WithApiKey(apiKey, configReadableMap, apiEndPointOverride, version, promise); + } + + @Override + public void setEmail(@Nullable String email, @Nullable String authToken) { + moduleImpl.setEmail(email, authToken); + } + + @Override + public void updateEmail(String email, @Nullable String authToken) { + moduleImpl.updateEmail(email, authToken); + } + + @Override + public void getEmail(Promise promise) { + moduleImpl.getEmail(promise); + } + + public void sampleMethod(String stringArgument, int numberArgument, Callback callback) { + moduleImpl.sampleMethod(stringArgument, numberArgument, callback); + } + + @Override + public void setUserId(@Nullable String userId, @Nullable String authToken) { + moduleImpl.setUserId(userId, authToken); + } + + @Override + public void updateUser(ReadableMap dataFields, boolean mergeNestedObjects) { + moduleImpl.updateUser(dataFields, mergeNestedObjects); + } + + @Override + public void getUserId(Promise promise) { + moduleImpl.getUserId(promise); + } + + @Override + public void trackEvent(String name, ReadableMap dataFields) { + moduleImpl.trackEvent(name, dataFields); + } + + @Override + public void updateCart(ReadableArray items) { + moduleImpl.updateCart(items); + } + + @Override + public void trackPurchase(double total, ReadableArray items, ReadableMap dataFields) { + moduleImpl.trackPurchase(total, items, dataFields); + } + + @Override + public void trackPushOpenWithCampaignId(double campaignId, Double templateId, String messageId, boolean appAlreadyRunning, ReadableMap dataFields) { + moduleImpl.trackPushOpenWithCampaignId(campaignId, templateId, messageId, appAlreadyRunning, dataFields); + } + + @Override + public void updateSubscriptions(ReadableArray emailListIds, ReadableArray unsubscribedChannelIds, ReadableArray unsubscribedMessageTypeIds, ReadableArray subscribedMessageTypeIds, double campaignId, double templateId) { + moduleImpl.updateSubscriptions(emailListIds, unsubscribedChannelIds, unsubscribedMessageTypeIds, subscribedMessageTypeIds, campaignId, templateId); + } + + @Override + public void showMessage(String messageId, boolean consume, final Promise promise) { + moduleImpl.showMessage(messageId, consume, promise); + } + + @Override + public void setReadForMessage(String messageId, boolean read) { + moduleImpl.setReadForMessage(messageId, read); + } + + @Override + public void removeMessage(String messageId, double location, double deleteSource) { + moduleImpl.removeMessage(messageId, location, deleteSource); + } + + @Override + public void getHtmlInAppContentForMessage(String messageId, final Promise promise) { + moduleImpl.getHtmlInAppContentForMessage(messageId, promise); + } + + @Override + public void getAttributionInfo(Promise promise) { + moduleImpl.getAttributionInfo(promise); + } + + @Override + public void setAttributionInfo(ReadableMap attributionInfoReadableMap) { + moduleImpl.setAttributionInfo(attributionInfoReadableMap); + } + + @Override + public void getLastPushPayload(Promise promise) { + moduleImpl.getLastPushPayload(promise); + } + + @Override + public void disableDeviceForCurrentUser() { + moduleImpl.disableDeviceForCurrentUser(); + } + + @Override + public void handleAppLink(String uri, Promise promise) { + moduleImpl.handleAppLink(uri, promise); + } + + @Override + public void trackInAppOpen(String messageId, double location) { + moduleImpl.trackInAppOpen(messageId, location); + } + + @Override + public void trackInAppClick(String messageId, double location, String clickedUrl) { + moduleImpl.trackInAppClick(messageId, location, clickedUrl); + } + + @Override + public void trackInAppClose(String messageId, double location, double source, @Nullable String clickedUrl) { + moduleImpl.trackInAppClose(messageId, location, source, clickedUrl); + } + + @Override + public void inAppConsume(String messageId, double location, double source) { + moduleImpl.inAppConsume(messageId, location, source); + } + + @Override + public void getInAppMessages(Promise promise) { + moduleImpl.getInAppMessages(promise); + } + + @Override + public void getInboxMessages(Promise promise) { + moduleImpl.getInboxMessages(promise); + } + + @Override + public void getUnreadInboxMessagesCount(Promise promise) { + moduleImpl.getUnreadInboxMessagesCount(promise); + } + + @Override + public void setInAppShowResponse(double number) { + moduleImpl.setInAppShowResponse(number); + } + + @Override + public void setAutoDisplayPaused(final boolean paused) { + moduleImpl.setAutoDisplayPaused(paused); + } + + @Override + public void wakeApp() { + moduleImpl.wakeApp(); + } + + @Override + public void startSession(ReadableArray visibleRows) { + moduleImpl.startSession(visibleRows); + } + + @Override + public void endSession() { + moduleImpl.endSession(); + } + + @Override + public void updateVisibleRows(ReadableArray visibleRows) { + moduleImpl.updateVisibleRows(visibleRows); + } + + @Override + public void addListener(String eventName) { + moduleImpl.addListener(eventName); + } + + @Override + public void removeListeners(double count) { + moduleImpl.removeListeners(count); + } + + @Override + public void passAlongAuthToken(String authToken) { + moduleImpl.passAlongAuthToken(authToken); + } + + public void sendEvent(@NonNull String eventName, @Nullable Object eventData) { + moduleImpl.sendEvent(eventName, eventData); + } + + public void onInboxUpdated() { + moduleImpl.onInboxUpdated(); + } +} diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/oldarch/java/com/reactnative/RNIterableAPIModule.java similarity index 100% rename from android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java rename to android/src/oldarch/java/com/reactnative/RNIterableAPIModule.java From 0b1ed4722efc71febab3c95a587770f965bf9e13 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 21 Aug 2025 15:40:27 -0700 Subject: [PATCH 02/11] chore: update Android Gradle properties for Kotlin and SDK versions --- android/gradle.properties | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/android/gradle.properties b/android/gradle.properties index a46c61ab2..89c682313 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,7 +1,7 @@ -RNIterable_kotlinVersion=1.7.0 -RNIterable_minSdkVersion=21 -RNIterable_targetSdkVersion=31 -RNIterable_compileSdkVersion=31 -RNIterable_ndkversion=21.4.7075529 +RNIterable_kotlinVersion=2.0.21 +RNIterable_minSdkVersion=24 +RNIterable_targetSdkVersion=35 +RNIterable_compileSdkVersion=35 +RNIterable_ndkversion=27.1.12297006 android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file +android.enableJetifier=true From b33941cde5fd2f09d20bfdc09fd95adfec4e1433 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 21 Aug 2025 16:06:36 -0700 Subject: [PATCH 03/11] refactor: enhance Android build configuration for new architecture support --- android/build.gradle | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index fd26bc186..333c51e5f 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,6 +1,7 @@ buildscript { - // Buildscript is evaluated before everything else so we can't use getExtOrDefault - def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["RNIterable_kotlinVersion"] + ext.getExtOrDefault = {name -> + return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['RNIterable_' + name] + } repositories { google() @@ -8,17 +9,12 @@ buildscript { } dependencies { - classpath "com.android.tools.build:gradle:7.2.1" + classpath "com.android.tools.build:gradle:8.7.2" // noinspection DifferentKotlinGradleVersion - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}" } } -def reactNativeArchitectures() { - def value = rootProject.getProperties().get("reactNativeArchitectures") - return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] -} - def isNewArchitectureEnabled() { return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true" } @@ -63,7 +59,11 @@ android { defaultConfig { minSdkVersion getExtOrIntegerDefault("minSdkVersion") targetSdkVersion getExtOrIntegerDefault("targetSdkVersion") + buildConfigField("boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()) + } + buildFeatures { + buildConfig true } buildTypes { @@ -80,6 +80,16 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + + sourceSets { + main { + if (isNewArchitectureEnabled()) { + java.srcDirs += ['src/newarch'] + } else { + java.srcDirs += ['src/oldarch'] + } + } + } } repositories { @@ -90,10 +100,7 @@ repositories { def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { - // For < 0.71, this will be from the local maven repo - // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin - //noinspection GradleDynamicVersion - implementation "com.facebook.react:react-native:+" + implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" api "com.iterable:iterableapi:3.5.2" // api project(":iterableapi") // links to local android SDK repo rather than by release From 6acab236730abd8091694cc5ae16e70727fed8a4 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 21 Aug 2025 16:20:59 -0700 Subject: [PATCH 04/11] refactor: remove deprecated imports in RNIterableAPIPackage for cleaner code --- .../java/com/iterable/reactnative/RNIterableAPIPackage.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java index c64a3d1f6..a49961d1e 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java @@ -8,12 +8,10 @@ import java.util.Map; import androidx.annotation.Nullable; -import com.facebook.react.bridge.JavaScriptModule; // TODO: instructrions says to remove import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.module.model.ReactModuleInfo; import com.facebook.react.module.model.ReactModuleInfoProvider; -import com.facebook.react.ReactPackage; // TODO: instructrions says to remove import com.facebook.react.TurboReactPackage; import com.facebook.react.uimanager.ViewManager; From f45c778f2c71dc10f16a98db750596d0842c90b9 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 21 Aug 2025 16:49:51 -0700 Subject: [PATCH 05/11] refactor: made newarch and oldarch structure more closely represent iterable structure --- .../java/com/iterable/reactnative/RNIterableAPIPackage.java | 3 ++- .../com/{ => iterable}/reactnative/RNIterableAPIModule.java | 0 .../com/{ => iterable}/reactnative/RNIterableAPIModule.java | 0 3 files changed, 2 insertions(+), 1 deletion(-) rename android/src/newarch/java/com/{ => iterable}/reactnative/RNIterableAPIModule.java (100%) rename android/src/oldarch/java/com/{ => iterable}/reactnative/RNIterableAPIModule.java (100%) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java index a49961d1e..930643c20 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java @@ -42,7 +42,8 @@ public ReactModuleInfoProvider getReactModuleInfoProvider() { true, // hasConstants false, // isCxxModule isTurboModule // isTurboModule - )); + ) + ); return moduleInfos; }; } diff --git a/android/src/newarch/java/com/reactnative/RNIterableAPIModule.java b/android/src/newarch/java/com/iterable/reactnative/RNIterableAPIModule.java similarity index 100% rename from android/src/newarch/java/com/reactnative/RNIterableAPIModule.java rename to android/src/newarch/java/com/iterable/reactnative/RNIterableAPIModule.java diff --git a/android/src/oldarch/java/com/reactnative/RNIterableAPIModule.java b/android/src/oldarch/java/com/iterable/reactnative/RNIterableAPIModule.java similarity index 100% rename from android/src/oldarch/java/com/reactnative/RNIterableAPIModule.java rename to android/src/oldarch/java/com/iterable/reactnative/RNIterableAPIModule.java From 7336f84f6d0db408bff72378b257eed28b94fc13 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 28 Aug 2025 17:25:00 -0700 Subject: [PATCH 06/11] refactor: transition RNIterableAPIPackage to extend BaseReactPackage --- .../reactnative/RNIterableAPIPackage.java | 44 ++++++++++--------- .../reactnative => }/RNIterableAPIModule.java | 0 .../reactnative => }/RNIterableAPIModule.java | 0 3 files changed, 23 insertions(+), 21 deletions(-) rename android/src/newarch/java/com/{iterable/reactnative => }/RNIterableAPIModule.java (100%) rename android/src/oldarch/java/com/{iterable/reactnative => }/RNIterableAPIModule.java (100%) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java index 930643c20..ecca94dc9 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java @@ -7,44 +7,46 @@ import java.util.List; import java.util.Map; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.facebook.react.BaseReactPackage; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.module.model.ReactModuleInfo; import com.facebook.react.module.model.ReactModuleInfoProvider; -import com.facebook.react.TurboReactPackage; import com.facebook.react.uimanager.ViewManager; -public class RNIterableAPIPackage extends TurboReactPackage { +public class RNIterableAPIPackage extends BaseReactPackage { @Nullable @Override - public NativeModule getModule(String name, ReactApplicationContext reactContext) { - if (name.equals(RNIterableAPIModuleImpl.NAME)) { + public NativeModule getModule(@NonNull String name, @NonNull ReactApplicationContext reactContext) { + if (RNIterableAPIModuleImpl.NAME.equals(name)) { return new RNIterableAPIModule(reactContext); } else { return null; } } + @NonNull @Override public ReactModuleInfoProvider getReactModuleInfoProvider() { - return () -> { - final Map moduleInfos = new HashMap<>(); - boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; - moduleInfos.put( - RNIterableAPIModuleImpl.NAME, - new ReactModuleInfo( - RNIterableAPIModuleImpl.NAME, - RNIterableAPIModuleImpl.NAME, - false, // canOverrideExistingModule - false, // needsEagerInit - true, // hasConstants - false, // isCxxModule - isTurboModule // isTurboModule - ) - ); - return moduleInfos; - }; + return new ReactModuleInfoProvider() { + @NonNull + @Override + public Map getReactModuleInfos() { + Map moduleInfos = new HashMap<>(); + boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + moduleInfos.put(RNIterableAPIModuleImpl.NAME, new ReactModuleInfo( + RNIterableAPIModuleImpl.NAME, + RNIterableAPIModuleImpl.NAME, + false, // canOverrideExistingModule + false, // needsEagerInit + false, // isCxxModule + isTurboModule // isTurboModule + )); + return moduleInfos; + } + }; } } diff --git a/android/src/newarch/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/newarch/java/com/RNIterableAPIModule.java similarity index 100% rename from android/src/newarch/java/com/iterable/reactnative/RNIterableAPIModule.java rename to android/src/newarch/java/com/RNIterableAPIModule.java diff --git a/android/src/oldarch/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/oldarch/java/com/RNIterableAPIModule.java similarity index 100% rename from android/src/oldarch/java/com/iterable/reactnative/RNIterableAPIModule.java rename to android/src/oldarch/java/com/RNIterableAPIModule.java From 9a75762135b87a1439522564dedb50fe0ee69dca Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 28 Aug 2025 19:07:15 -0700 Subject: [PATCH 07/11] chore: set group ID and modify example AndroidManifest.xml for notification permissions --- android/build.gradle | 3 ++ .../reactnative/RNIterableAPIModuleImpl.java | 5 -- .../reactnative/RNIterableAPIPackage.java | 6 --- .../newarch/java/com/RNIterableAPIModule.java | 6 --- .../android/app/src/main/AndroidManifest.xml | 52 +++++++++++-------- 5 files changed, 33 insertions(+), 39 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 333c51e5f..a4f938ffc 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -90,6 +90,9 @@ android { } } } + + // Add this to match the Iterable SDK group ID + group = "com.iterable" } repositories { diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index f3814fd53..f6c417103 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -12,15 +12,11 @@ import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContextBaseJavaModule; -import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.bridge.WritableMap; -import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.modules.core.DeviceEventManagerModule; -import com.facebook.react.modules.core.RCTNativeAppEventEmitter; import com.iterable.iterableapi.InboxSessionManager; import com.iterable.iterableapi.IterableAction; @@ -40,7 +36,6 @@ import com.iterable.iterableapi.IterableLogger; import com.iterable.iterableapi.IterableUrlHandler; import com.iterable.iterableapi.RNIterableInternal; -import com.iterable.reactnative.Serialization; import org.json.JSONArray; import org.json.JSONException; diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java index ecca94dc9..3fade361b 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIPackage.java @@ -1,10 +1,6 @@ package com.iterable.reactnative; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; import androidx.annotation.NonNull; @@ -14,8 +10,6 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.module.model.ReactModuleInfo; import com.facebook.react.module.model.ReactModuleInfoProvider; -import com.facebook.react.uimanager.ViewManager; - public class RNIterableAPIPackage extends BaseReactPackage { @Nullable diff --git a/android/src/newarch/java/com/RNIterableAPIModule.java b/android/src/newarch/java/com/RNIterableAPIModule.java index f885b133a..2a6d22302 100644 --- a/android/src/newarch/java/com/RNIterableAPIModule.java +++ b/android/src/newarch/java/com/RNIterableAPIModule.java @@ -3,16 +3,10 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.facebook.react.bridge.Callback; -import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContext; -import com.facebook.react.bridge.ReactContextBaseJavaModule; -import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; -import java.util.Map; -import java.util.HashMap; public class RNIterableAPIModule extends NativeRNIterableAPISpec { private final ReactApplicationContext reactContext; diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index e1892528b..ca5b5e90c 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,26 +1,34 @@ - + + - + + + + + + + + - - - - - - - - + android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" + android:launchMode="singleTask" + android:windowSoftInputMode="adjustResize" + android:exported="true"> + + + + + + + \ No newline at end of file From ac23ec2a17dadd52692f374f5fb6109abc62d78a Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 28 Aug 2025 19:15:22 -0700 Subject: [PATCH 08/11] refactor: removed unused dependencies --- android/src/oldarch/java/com/RNIterableAPIModule.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/android/src/oldarch/java/com/RNIterableAPIModule.java b/android/src/oldarch/java/com/RNIterableAPIModule.java index 78b2d280b..68b6ae79b 100644 --- a/android/src/oldarch/java/com/RNIterableAPIModule.java +++ b/android/src/oldarch/java/com/RNIterableAPIModule.java @@ -3,16 +3,12 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.facebook.react.bridge.Callback; -import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; -import java.util.Map; -import java.util.HashMap; public class RNIterableAPIModule extends ReactContextBaseJavaModule { private final ReactApplicationContext reactContext; @@ -26,6 +22,7 @@ public class RNIterableAPIModule extends ReactContextBaseJavaModule { } } + @NonNull @Override public String getName() { return RNIterableAPIModuleImpl.NAME; From fa2b756a136a5fa5afff41bb37b362078fcea36a Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 28 Aug 2025 19:36:05 -0700 Subject: [PATCH 09/11] 2.0.3-alpha.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ebfd25a20..51003a26f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iterable/react-native-sdk", - "version": "2.0.2", + "version": "2.0.3-alpha.0", "description": "Iterable SDK for React Native.", "source": "./src/index.tsx", "main": "./lib/module/index.js", From 53b12c39d06bdc6ca977a438283d124a847c46dc Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 28 Aug 2025 19:37:14 -0700 Subject: [PATCH 10/11] 2.0.3-alpha.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 51003a26f..75947503f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iterable/react-native-sdk", - "version": "2.0.3-alpha.0", + "version": "2.0.3-alpha.1", "description": "Iterable SDK for React Native.", "source": "./src/index.tsx", "main": "./lib/module/index.js", From 61ec865ba0d3f3ec80c12e0b63bdf5fa263a6552 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Thu, 28 Aug 2025 19:54:37 -0700 Subject: [PATCH 11/11] chore: downgrade version from 2.0.3-alpha.1 to 2.0.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 75947503f..ebfd25a20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iterable/react-native-sdk", - "version": "2.0.3-alpha.1", + "version": "2.0.2", "description": "Iterable SDK for React Native.", "source": "./src/index.tsx", "main": "./lib/module/index.js",