From e7f943de2fd71d2259ab53e7817d2dcf96559f7e Mon Sep 17 00:00:00 2001 From: Wojciech Lewicki Date: Thu, 5 Dec 2024 04:46:28 -0800 Subject: [PATCH] fix: long not implemented on native side (#48017) Summary: Handling `long` values is not implemented in Writables. I added it on the native side. ## Changelog: [ANDROID] [FIXED] - Support Long values in WritableMap and WritableArray Pull Request resolved: https://github.com/facebook/react-native/pull/48017 Test Plan: Run https://github.com/WoLewicki/reproducer-react-native/tree/%40wolewicki/long-in-writeable-map and see it doesn't work without those changes. Reviewed By: javache Differential Revision: D66754194 Pulled By: cortinico fbshipit-source-id: 7f8d4eb3c4069f890460525ddffdf9f4324550b0 --- .../src/main/jni/react/jni/WritableNativeArray.cpp | 6 ++++++ .../src/main/jni/react/jni/WritableNativeArray.h | 1 + .../src/main/jni/react/jni/WritableNativeMap.cpp | 6 ++++++ .../ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h | 1 + 4 files changed, 14 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp index c2c88197156..ab01a90c593 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp @@ -47,6 +47,11 @@ void WritableNativeArray::pushInt(jint value) { array_.push_back(value); } +void WritableNativeArray::pushLong(jlong value) { + throwIfConsumed(); + array_.push_back(value); +} + void WritableNativeArray::pushString(jstring value) { if (value == NULL) { pushNull(); @@ -81,6 +86,7 @@ void WritableNativeArray::registerNatives() { makeNativeMethod("pushBoolean", WritableNativeArray::pushBoolean), makeNativeMethod("pushDouble", WritableNativeArray::pushDouble), makeNativeMethod("pushInt", WritableNativeArray::pushInt), + makeNativeMethod("pushLong", WritableNativeArray::pushLong), makeNativeMethod("pushString", WritableNativeArray::pushString), makeNativeMethod("pushNativeArray", WritableNativeArray::pushNativeArray), makeNativeMethod("pushNativeMap", WritableNativeArray::pushNativeMap), diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h b/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h index 12cc5d80d99..b40eb5916fb 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h @@ -36,6 +36,7 @@ struct WritableNativeArray void pushBoolean(jboolean value); void pushDouble(jdouble value); void pushInt(jint value); + void pushLong(jlong value); void pushString(jstring value); void pushNativeArray(ReadableNativeArray* otherArray); void pushNativeMap(ReadableNativeMap* map); diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp index 9cb7049c135..2a4471b6ed1 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp @@ -44,6 +44,11 @@ void WritableNativeMap::putInt(std::string key, int val) { map_.insert(std::move(key), val); } +void WritableNativeMap::putLong(std::string key, jlong val) { + throwIfConsumed(); + map_.insert(std::move(key), val); +} + void WritableNativeMap::putString(std::string key, alias_ref val) { if (!val) { putNull(std::move(key)); @@ -90,6 +95,7 @@ void WritableNativeMap::registerNatives() { makeNativeMethod("putBoolean", WritableNativeMap::putBoolean), makeNativeMethod("putDouble", WritableNativeMap::putDouble), makeNativeMethod("putInt", WritableNativeMap::putInt), + makeNativeMethod("putLong", WritableNativeMap::putLong), makeNativeMethod("putString", WritableNativeMap::putString), makeNativeMethod("putNativeArray", WritableNativeMap::putNativeArray), makeNativeMethod("putNativeMap", WritableNativeMap::putNativeMap), diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h b/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h index a05fe70c958..a13f60cb612 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h @@ -35,6 +35,7 @@ struct WritableNativeMap void putBoolean(std::string key, bool val); void putDouble(std::string key, double val); void putInt(std::string key, int val); + void putLong(std::string key, jlong val); void putString(std::string key, jni::alias_ref val); void putNativeArray(std::string key, ReadableNativeArray* val); void putNativeMap(std::string key, ReadableNativeMap* val);