Skip to content

Commit 05f62a3

Browse files
committed
fix(analytics, android): improve handling of items in Firebase Analytics bundle
1 parent fdf5f4d commit 05f62a3

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

packages/analytics/android/src/reactnative/java/io/invertase/firebase/analytics/ReactNativeFirebaseAnalyticsModule.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,13 +197,27 @@ private Bundle toBundle(ReadableMap readableMap) {
197197
if (bundle == null) {
198198
return null;
199199
}
200+
200201
ArrayList itemsArray = (ArrayList) bundle.getSerializable(FirebaseAnalytics.Param.ITEMS);
201-
for (Object item : itemsArray != null ? itemsArray : new ArrayList()) {
202-
if (item instanceof Bundle && ((Bundle) item).containsKey(FirebaseAnalytics.Param.QUANTITY)) {
203-
double number = ((Bundle) item).getDouble(FirebaseAnalytics.Param.QUANTITY);
204-
((Bundle) item).putInt(FirebaseAnalytics.Param.QUANTITY, (int) number);
202+
if (itemsArray != null) {
203+
if (itemsArray.isEmpty()) {
204+
bundle.putParcelableArray(FirebaseAnalytics.Param.ITEMS, new Bundle[0]);
205+
} else {
206+
ArrayList<Bundle> validBundles = new ArrayList<>();
207+
for (Object item : itemsArray) {
208+
if (item instanceof Bundle) {
209+
Bundle itemBundle = (Bundle) item;
210+
if (itemBundle.containsKey(FirebaseAnalytics.Param.QUANTITY)) {
211+
double number = itemBundle.getDouble(FirebaseAnalytics.Param.QUANTITY);
212+
itemBundle.putInt(FirebaseAnalytics.Param.QUANTITY, (int) number);
213+
}
214+
validBundles.add(itemBundle);
215+
}
216+
}
217+
bundle.putParcelableArray(FirebaseAnalytics.Param.ITEMS, validBundles.toArray(new Bundle[0]));
205218
}
206219
}
220+
207221
if (bundle.containsKey(FirebaseAnalytics.Param.EXTEND_SESSION)) {
208222
double number = bundle.getDouble(FirebaseAnalytics.Param.EXTEND_SESSION);
209223
bundle.putLong(FirebaseAnalytics.Param.EXTEND_SESSION, (long) number);

0 commit comments

Comments
 (0)