package com.blaze.rtnblazesdk.base import com.blaze.rtnblazesdk.events.WidgetCTAClickEvent import com.blaze.rtnblazesdk.events.WidgetDataLoadCompletedEvent import com.blaze.rtnblazesdk.events.WidgetDataLoadStartedEvent import com.blaze.rtnblazesdk.events.WidgetItemClickedEvent import com.blaze.rtnblazesdk.events.WidgetOnPlayerEventTriggered import com.blaze.rtnblazesdk.events.WidgetOnTriggerPlayerBodyTextLinkEvent import com.blaze.rtnblazesdk.events.WidgetPlayerDidAppearEvent import com.blaze.rtnblazesdk.events.WidgetPlayerDismissedEvent import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReadableArray import com.facebook.react.common.MapBuilder import com.facebook.react.uimanager.LayoutShadowNode import com.facebook.react.uimanager.SimpleViewManager abstract class BaseViewManager( context: ReactApplicationContext?, ) : SimpleViewManager() { override fun receiveCommand(view: TView, commandId: Int, args: ReadableArray?) { when (commandId) { COMMAND_RELOAD_DATA_ID -> args?.let { view.getIsSilentRefreshAndReloadData(it) } COMMAND_UPDATE_DATA_SOURCE_ID -> args?.let { view.updateDataSourceFromArgs(it) } COMMAND_PLAY_WIDGET_ID -> view.play() COMMAND_UPDATE_OVERRIDE_STYLES_ID -> args?.let { view.updateOverrideStylesFromArgs(it) } COMMAND_UPDATE_WIDGETS_UI_ID -> view.updateWidgetsUi() } } override fun getExportedCustomDirectEventTypeConstants(): Map? { val map1 = MapBuilder.of( WidgetDataLoadStartedEvent.EVENT_NAME, MapBuilder.of(KEY_EVENT_REGISTRATION_NAME, "onWidgetDataLoadStartedInternal"), WidgetDataLoadCompletedEvent.EVENT_NAME, MapBuilder.of(KEY_EVENT_REGISTRATION_NAME, "onWidgetDataLoadCompletedInternal"), WidgetPlayerDidAppearEvent.EVENT_NAME, MapBuilder.of(KEY_EVENT_REGISTRATION_NAME, "onWidgetPlayerDidAppearInternal"), WidgetPlayerDismissedEvent.EVENT_NAME, MapBuilder.of(KEY_EVENT_REGISTRATION_NAME, "onWidgetPlayerDismissedInternal"), WidgetItemClickedEvent.EVENT_NAME, MapBuilder.of(KEY_EVENT_REGISTRATION_NAME, "onItemClickedInternal"), WidgetCTAClickEvent.EVENT_NAME, MapBuilder.of(KEY_EVENT_REGISTRATION_NAME, "onTriggerCTAInternal"), WidgetOnTriggerPlayerBodyTextLinkEvent.EVENT_NAME, MapBuilder.of(KEY_EVENT_REGISTRATION_NAME, "onTriggerPlayerBodyTextLinkInternal"), ) val map2 = MapBuilder.of( WidgetOnPlayerEventTriggered.EVENT_NAME, MapBuilder.of(KEY_EVENT_REGISTRATION_NAME, "onPlayerEventTriggeredInternal"), ) val finalMap = HashMap() finalMap.putAll(map1) finalMap.putAll(map2) return finalMap } override fun createShadowNodeInstance(): LayoutShadowNode { return BlazeWidgetViewShadowNode() } companion object { const val COMMAND_RELOAD_DATA = "reloadData" const val COMMAND_UPDATE_DATA_SOURCE = "updateDataSource" const val COMMAND_PLAY_WIDGET = "play" const val KEY_EVENT_REGISTRATION_NAME = "registrationName" const val COMMAND_UPDATE_OVERRIDE_STYLES = "updateOverrideStyles" const val COMMAND_UPDATE_WIDGETS_UI = "updateWidgetsUi" //COMMAND IDs const val COMMAND_RELOAD_DATA_ID = 0 const val COMMAND_UPDATE_DATA_SOURCE_ID = 1 const val COMMAND_PLAY_WIDGET_ID = 2 const val COMMAND_UPDATE_OVERRIDE_STYLES_ID = 3 const val COMMAND_UPDATE_WIDGETS_UI_ID = 4 } override fun getCommandsMap(): MutableMap { return mutableMapOf( COMMAND_RELOAD_DATA to COMMAND_RELOAD_DATA_ID, COMMAND_UPDATE_DATA_SOURCE to COMMAND_UPDATE_DATA_SOURCE_ID, COMMAND_PLAY_WIDGET to COMMAND_PLAY_WIDGET_ID, COMMAND_UPDATE_OVERRIDE_STYLES to COMMAND_UPDATE_OVERRIDE_STYLES_ID, COMMAND_UPDATE_WIDGETS_UI to COMMAND_UPDATE_WIDGETS_UI_ID, ) } }