From 8fec5cde62d4537945159bf47c41b50a51571f58 Mon Sep 17 00:00:00 2001 From: jayant-dhingra-cb Date: Fri, 26 Sep 2025 00:56:04 +0530 Subject: [PATCH 1/4] refactor: simplify array handling and improve blob data validation in DataAdapter --- .../java/com/cblreactnative/DataAdapter.kt | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/android/src/main/java/com/cblreactnative/DataAdapter.kt b/android/src/main/java/com/cblreactnative/DataAdapter.kt index e196557..33bf2e2 100644 --- a/android/src/main/java/com/cblreactnative/DataAdapter.kt +++ b/android/src/main/java/com/cblreactnative/DataAdapter.kt @@ -123,11 +123,9 @@ object DataAdapter { indexProperties?.let { ip -> if (indexType == "value") { for (countValue in 0 until ip.size()) { - val arItems = ip.getArray(countValue) - arItems?.let { items -> + ip.getArray(countValue)?.let { items -> for (countArray in 0 until items.size()) { - val item = items.getString(countArray) - item?.let { itemValue -> + items.getString(countArray)?.let { itemValue -> valueIndexProperties.add(ValueIndexItem.property(itemValue)) } } @@ -135,11 +133,9 @@ object DataAdapter { } } else { for (countValue in 0 until ip.size()) { - val arItems = ip.getArray(countValue) - arItems?.let { items -> + ip.getArray(countValue)?.let { items -> for (countArray in 0 until items.size()) { - val item = items.getString(countArray) - item?.let { itemValue -> + items.getString(countArray)?.let { itemValue -> fullTextIndexProperties.add(FullTextIndexItem.property(itemValue)) } } @@ -514,17 +510,17 @@ object DataAdapter { for ((key, value) in readableMap.toHashMap()) { if (value != null) { - if (value is HashMap<*, *> && value["_type"] == "blob") { - val nestedMap = value["data"] as HashMap<*, *> - val contentType = nestedMap["contentType"] as String - //value["data"] 'should be' an array of integers - need to convert it because React Native serializes it into - //an the ArrayList - val rawList = nestedMap["data"] as? ArrayList<*> - val doubleList = rawList?.filterIsInstance() - ?.takeIf { it.size == rawList.size } as? ArrayList - val intData = doubleList?.map { it.toInt() }?.toIntArray() - ?: throw Exception("Error: Invalid blob data") - + if (value is Map<*, *> && value["_type"] == "blob") { + val nestedMap = value["data"] as? Map<*, *> + ?: throw Exception("Error: Invalid blob object") + val contentType = nestedMap["contentType"] as? String + ?: throw Exception("Error: Missing blob contentType") + val rawList = nestedMap["data"] as? List<*> + ?: throw Exception("Error: Missing blob data array") + val doubleList = rawList.filterIsInstance() + .takeIf { it.size == rawList.size } + ?: throw Exception("Error: Invalid blob data format") + val intData = doubleList.map { it.toInt() }.toIntArray() val data = ByteArray(intData.size) { i -> intData[i].toByte() } resultMap[key] = Blob(contentType, data) } else { From 8f0a5dbf3a455527d3078c1963e58155493b68e7 Mon Sep 17 00:00:00 2001 From: jayant-dhingra-cb Date: Fri, 3 Oct 2025 21:28:35 +0530 Subject: [PATCH 2/4] chore: update submodule reference and enhance blob data handling in DataAdapter --- .../java/com/cblreactnative/DataAdapter.kt | 22 +++++++++---------- .../java/com/cblreactnative/cbl-js-kotlin | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/android/src/main/java/com/cblreactnative/DataAdapter.kt b/android/src/main/java/com/cblreactnative/DataAdapter.kt index 33bf2e2..5ccb15d 100644 --- a/android/src/main/java/com/cblreactnative/DataAdapter.kt +++ b/android/src/main/java/com/cblreactnative/DataAdapter.kt @@ -510,17 +510,17 @@ object DataAdapter { for ((key, value) in readableMap.toHashMap()) { if (value != null) { - if (value is Map<*, *> && value["_type"] == "blob") { - val nestedMap = value["data"] as? Map<*, *> - ?: throw Exception("Error: Invalid blob object") - val contentType = nestedMap["contentType"] as? String - ?: throw Exception("Error: Missing blob contentType") - val rawList = nestedMap["data"] as? List<*> - ?: throw Exception("Error: Missing blob data array") - val doubleList = rawList.filterIsInstance() - .takeIf { it.size == rawList.size } - ?: throw Exception("Error: Invalid blob data format") - val intData = doubleList.map { it.toInt() }.toIntArray() + if (value is HashMap<*, *> && value["_type"] == "blob") { + val nestedMap = value["data"] as HashMap<*, *> + val contentType = nestedMap["contentType"] as String + //value["data"] 'should be' an array of integers - need to convert it because React Native serializes it into + //an the ArrayList + val rawList = nestedMap["data"] as? ArrayList<*> + val doubleList = rawList?.filterIsInstance() + ?.takeIf { it.size == rawList.size } as? ArrayList + val intData = doubleList?.map { it.toInt() }?.toIntArray() + ?: throw Exception("Error: Invalid blob data") + val data = ByteArray(intData.size) { i -> intData[i].toByte() } resultMap[key] = Blob(contentType, data) } else { diff --git a/android/src/main/java/com/cblreactnative/cbl-js-kotlin b/android/src/main/java/com/cblreactnative/cbl-js-kotlin index c4e3f7d..9a52690 160000 --- a/android/src/main/java/com/cblreactnative/cbl-js-kotlin +++ b/android/src/main/java/com/cblreactnative/cbl-js-kotlin @@ -1 +1 @@ -Subproject commit c4e3f7d7c6dd4c2b1dfcaf404c9c19f78ae9fb0a +Subproject commit 9a52690fa4cba594dc993d6eaa7bccdd5405dab3 From 3aed04ea3c3e0fff3197cdd255cf14450b836578 Mon Sep 17 00:00:00 2001 From: jayant-dhingra-cb Date: Fri, 3 Oct 2025 21:44:38 +0530 Subject: [PATCH 3/4] Revert submodule cbl-js-kotlin back to c4e3f7 --- android/src/main/java/com/cblreactnative/cbl-js-kotlin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/cblreactnative/cbl-js-kotlin b/android/src/main/java/com/cblreactnative/cbl-js-kotlin index 9a52690..c4e3f7d 160000 --- a/android/src/main/java/com/cblreactnative/cbl-js-kotlin +++ b/android/src/main/java/com/cblreactnative/cbl-js-kotlin @@ -1 +1 @@ -Subproject commit 9a52690fa4cba594dc993d6eaa7bccdd5405dab3 +Subproject commit c4e3f7d7c6dd4c2b1dfcaf404c9c19f78ae9fb0a From c5e38978c0c96cc0b05908dae3863973d3fb0557 Mon Sep 17 00:00:00 2001 From: jayant-dhingra-cb Date: Fri, 3 Oct 2025 23:07:42 +0530 Subject: [PATCH 4/4] chore: update cbl-js-kotlin submodule to latest main branch --- android/src/main/java/com/cblreactnative/cbl-js-kotlin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/cblreactnative/cbl-js-kotlin b/android/src/main/java/com/cblreactnative/cbl-js-kotlin index c4e3f7d..2756957 160000 --- a/android/src/main/java/com/cblreactnative/cbl-js-kotlin +++ b/android/src/main/java/com/cblreactnative/cbl-js-kotlin @@ -1 +1 @@ -Subproject commit c4e3f7d7c6dd4c2b1dfcaf404c9c19f78ae9fb0a +Subproject commit 27569575b375fc67965a80d69868587f199e1928