package com.blaze.rtnblazegam.module import com.blaze.blazesdk.ads.custom_native.BlazeGoogleCustomNativeAdsHandler import com.blaze.gam.custom_native.BlazeCustomNativeAdData 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: BlazeGoogleCustomNativeAdsHandler.EventType, val adData: BlazeCustomNativeAdData ): 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 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 = "BlazeGAM.onAdEvent" private const val KEY_PARAM_ON_AD_EVENT_TYPE = "eventType" private const val KEY_EVENT_NAME_ON_AD_ERROR = "BlazeGAM.onAdError" private const val KEY_PARAM_ON_AD_ERROR_EVENT_MESSAGE = "errorMessage" } } fun BlazeGoogleCustomNativeAdsHandler.EventType.toReactEventTypeParam(): String { return when (this) { BlazeGoogleCustomNativeAdsHandler.EventType.OPENED_AD -> "openedAd" BlazeGoogleCustomNativeAdsHandler.EventType.AD_PAGE_START -> "adPageStart" BlazeGoogleCustomNativeAdsHandler.EventType.AD_PAGE_FIRST_QUARTER -> "adPageFirstQuarter" BlazeGoogleCustomNativeAdsHandler.EventType.AD_PAGE_THIRD -> "adPageThird" BlazeGoogleCustomNativeAdsHandler.EventType.AD_PAGE_MID -> "adPageMid" BlazeGoogleCustomNativeAdsHandler.EventType.AD_PAGE_COMPLETE -> "adPageComplete" BlazeGoogleCustomNativeAdsHandler.EventType.PAUSED_AD_PAGE -> "pausedAdPage" BlazeGoogleCustomNativeAdsHandler.EventType.RESUMED_AD_PAGE -> "resumedAdPage" BlazeGoogleCustomNativeAdsHandler.EventType.CTA_CLICKED -> "ctaClicked" } }