package com.blaze.rtnblazegam.module import com.blaze.blazesdk.ads.banners.BlazeGAMBannerHandlerEventType import com.blaze.blazesdk.ads.custom_native.BlazeGoogleCustomNativeAdsHandler import com.blaze.gam.banner.BlazeGAMBannerAdsAdData 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 OnCustomNativeAdEvent( 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 OnCustomNativeAdErrorEvent( 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) } } data class OnGAMBannerAdsAdEvent( val eventType: BlazeGAMBannerHandlerEventType, val adData: BlazeGAMBannerAdsAdData ): SdkModuleJsEvent { override val eventName = "BlazeGAM.onGAMBannerAdsAdEvent" override val params: WritableMap = Arguments.createMap().apply { putString("eventType", eventType.toReactEventTypeParam()) } } data class OnGAMBannerAdsAdError( val errorMessage: String, val adData: BlazeGAMBannerAdsAdData ): SdkModuleJsEvent { override val eventName = "BlazeGAM.onGAMBannerAdsAdError" override val params: WritableMap = Arguments.createMap().apply { putString("errorMessage", 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" } } fun BlazeGAMBannerHandlerEventType.toReactEventTypeParam(): String { return when (this) { BlazeGAMBannerHandlerEventType.AD_LOADED -> "adLoaded" BlazeGAMBannerHandlerEventType.AD_CLICKED -> "adClicked" BlazeGAMBannerHandlerEventType.AD_IMPRESSION -> "adImpression" BlazeGAMBannerHandlerEventType.AD_REQUESTED -> "adRequested" } }