package com.blaze.rtnblazeima.module import com.blaze.blazesdk.ads.ima.BlazeIMAHandlerEventType import com.blaze.blazesdk.ads.ima.models.BlazeImaAdInfo import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.WritableMap sealed interface SdkModuleJsEvent { val eventName: String val params: WritableMap data class OnAdEvent(val eventType: BlazeIMAHandlerEventType, val ad: BlazeImaAdInfo? ): SdkModuleJsEvent { override val eventName = KEY_EVENT_NAME_EVENT_TRIGGERED override val params: WritableMap = Arguments.createMap().apply { putString(KEY_PARAM_ON_AD_EVENT_TYPE, eventType.toReactEventTypeParam()) } } data class OnAdErrorEvent(val errorMessage: String): SdkModuleJsEvent { override val eventName = KEY_EVENT_NAME_ON_AD_ERROR_EVENT override val params: WritableMap = Arguments.createMap().apply { putString(KEY_PARAM_ON_AD_ERROR_EVENT_MESSAGE, errorMessage) } } companion object { private const val KEY_EVENT_NAME_EVENT_TRIGGERED = "BlazeIMA.onAdEvent" private const val KEY_PARAM_ON_AD_EVENT_TYPE = "eventType" private const val KEY_EVENT_NAME_ON_AD_ERROR_EVENT = "BlazeIMA.onAdError" private const val KEY_PARAM_ON_AD_ERROR_EVENT_MESSAGE = "errorMessage" } } fun BlazeIMAHandlerEventType.toReactEventTypeParam(): String { return when (this) { BlazeIMAHandlerEventType.AD_STARTED -> "adStarted" BlazeIMAHandlerEventType.ALL_ADS_COMPLETED -> "allAdsCompleted" BlazeIMAHandlerEventType.AD_CLICKED -> "adClicked" BlazeIMAHandlerEventType.AD_COMPLETED -> "adCompleted" BlazeIMAHandlerEventType.AD_LOADED -> "adLoaded" BlazeIMAHandlerEventType.AD_PAUSED -> "adPaused" BlazeIMAHandlerEventType.AD_RESUMED -> "adResumed" BlazeIMAHandlerEventType.AD_SKIPPED -> "adSkipped" BlazeIMAHandlerEventType.AD_TAPPED -> "adTapped" BlazeIMAHandlerEventType.AD_FIRST_QUARTILE -> "adFirstQuartile" BlazeIMAHandlerEventType.AD_MIDPOINT -> "adMidpoint" BlazeIMAHandlerEventType.AD_THIRD_QUARTILE -> "adThirdQuartile" BlazeIMAHandlerEventType.AD_REQUESTED -> "adRequested" } }