From 5fddf5f05f6d65549f67a950dffeb0426efa9137 Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Tue, 18 Jul 2023 11:31:40 -0300 Subject: [PATCH] fix(analytics): long/double handling for android --- packages/firebase-analytics/index.android.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/firebase-analytics/index.android.ts b/packages/firebase-analytics/index.android.ts index b30d28e4..bb572c2c 100644 --- a/packages/firebase-analytics/index.android.ts +++ b/packages/firebase-analytics/index.android.ts @@ -15,9 +15,11 @@ Object.defineProperty(fb, 'analytics', { writable: false, }); -function serialize(data) { - let store; +function numberHasDecimals(item: number) { + return !(item % 1 === 0); +} +function serialize(data) { switch (typeof data) { case 'string': case 'boolean': @@ -31,7 +33,7 @@ function serialize(data) { } if (Array.isArray(data)) { - store = new java.util.ArrayList(); + const store = new java.util.ArrayList(); data.forEach((item) => { const value = serialize(item); switch (typeof value) { @@ -49,7 +51,7 @@ function serialize(data) { return store; } - store = new android.os.Bundle(); + const store = new android.os.Bundle(); Object.keys(data).forEach((key) => { const value = serialize(data[key]); switch (typeof value) { @@ -57,7 +59,11 @@ function serialize(data) { store.putBoolean(key, value); break; case 'number': - store.putInt(key, value); + if (numberHasDecimals(value)) { + store.putDouble(key, value); + } else { + store.putLong(key, value); + } break; case 'string': store.putString(key, value);