package com.contentsquare.rn.csq.utils import android.util.Log import com.contentsquare.api.model.CustomVar import com.facebook.react.bridge.ReadableArray import com.facebook.react.bridge.ReadableType import com.contentsquare.android.api.model.CustomVar as LegacyCustomVar object CustomVarConverter { fun convertReadableArrayToCSQCustomVarList(customVars: ReadableArray?): List { return convertReadableArray(customVars) { index, key, value -> CustomVar(index, key, value) } } fun convertReadableArrayToLegacyCustomVarList(customVars: ReadableArray?): List { return convertReadableArray(customVars) { index, key, value -> LegacyCustomVar(index, key, value) } } private inline fun convertReadableArray( customVars: ReadableArray?, createCustomVar: (index: Int, key: String, value: String) -> T ): List { if (customVars == null) return emptyList() val customVarList = mutableListOf() for (i in 0 until customVars.size()) { val type = customVars.getType(i) if (type == ReadableType.Map) { try { val map = customVars.getMap(i) val index = map?.getInt("index") ?: continue val key = map.getString("key") ?: continue val value = map.getString("value") ?: continue customVarList.add(createCustomVar(index, key, value)) } catch (e: Exception) { Log.e("CSLIB", "Error converting custom var at index $i: Failed to extract required fields. Expected object with 'index' (number), 'key' (string), 'value' (string).") } } else { Log.w("CSLIB", "Custom var at index $i is not an object. Skipping.") } } return customVarList } }