package com.kochavameasurement // // KochavaMeasurement (ReactNative) // // Copyright (c) 2018 - 2025 Kochava, Inc. All rights reserved. // import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.module.annotations.ReactModule import com.kochava.core.json.internal.JsonArray import com.kochava.core.json.internal.JsonObject import com.kochava.core.util.internal.ObjectUtil import com.kochava.measurement.base.Measurement import com.kochava.measurement.base.events.Event import com.kochava.measurement.base.log.LogLevel @ReactModule(name = KochavaMeasurementModule.NAME) class KochavaMeasurementModule(private val reactContext: ReactApplicationContext) : NativeKochavaMeasurementSpec(reactContext) { override fun getName(): String { return NAME } override fun executeAdvancedInstruction(name: String, value: String, callbackId: String?, promise: Promise) { when (callbackId) { null, "" -> { // No callback Measurement.getInstance().executeAdvancedInstruction(reactContext.applicationContext, name, value, null) promise.resolve("") } "standard" -> { // Promise callback Measurement.getInstance().executeAdvancedInstruction(reactContext.applicationContext, name, value) { data -> promise.resolve(data) } } else -> { // Persistent callback Measurement.getInstance().executeAdvancedInstruction(reactContext.applicationContext, name, value) { data -> emitOnExecuteAdvancedInstruction(Arguments.createMap().apply { putString("id", callbackId) putString("data", data) }) } promise.resolve("") } } } companion object { const val NAME = "KochavaMeasurement" } }