package com.blaze.rtnblazesdk.videos import android.content.Context import android.util.AttributeSet import com.blaze.blazesdk.data_source.BlazeDataSourceType import com.blaze.blazesdk.features.videos.widgets.row.BlazeVideosWidgetRowView import com.blaze.blazesdk.style.widgets.BlazeWidgetItemCustomMapping import com.blaze.blazesdk.style.widgets.BlazeWidgetItemStyleOverrides import com.blaze.blazesdk.style.widgets.BlazeWidgetLayout import com.blaze.rtnblazesdk.base.BaseWidgetView import com.blaze.rtnblazesdk.utils.asWidgetLayoutPreset import com.blaze.rtnblazesdk.utils.extractVideosPlaybackConfiguration import com.blaze.rtnblazesdk.utils.extractVideosPlayerStyle import com.facebook.react.bridge.ReadableMap class BlazeVideosRowView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : BaseWidgetView(context, attrs, defStyleAttr) { private fun getWidget(): BlazeVideosWidgetRowView? = (widgetView as? BlazeVideosWidgetRowView) override fun createNewWidgetView(): BlazeVideosWidgetRowView { return BlazeVideosWidgetRowView(context, null, 0, 0) } override fun reloadData(isSilentRefresh: Boolean) { getWidget()?.reloadData(isSilentRefresh) } override fun updateWidgetDataSource(sourceType: BlazeDataSourceType, isSilentRefresh: Boolean) { getWidget()?.updateDataSource( dataSourceType = sourceType, isSilentRefresh = isSilentRefresh ) } override fun updateOverrideStyles( perItemStyleOverrides: Map, shouldUpdateUi: Boolean ) { getWidget()?.updateOverrideStyles( perItemStyleOverrides = perItemStyleOverrides, shouldUpdateUi = shouldUpdateUi ) } override fun updateWidgetsUi() { getWidget()?.updateWidgetsUi() } override fun play() { getWidget()?.play() } override fun callInitWidget(dataSource: BlazeDataSourceType) { val widget = getWidget() ?: return val widgetLayout = parseWidgetLayout( presetStyle = presetWidgetLayoutString, reactWidgetLayout = reactWidgetLayoutStyleMap, ).also { nativeWidgetLayout = it } val perItemStylesOverridesMap = applyWidgetItemStyleOverrides( reactPerItemStyleOverrides = perItemStyleOverridesReadableMap, widgetLayout = widgetLayout, context = context ) val customizePlayerStyle = reactWidgetPlayerStyleMap.extractVideosPlayerStyle(context) val customizePlaybackConfiguration = reactWidgetPlaybackConfigurationMap.extractVideosPlaybackConfiguration() val widgetId = "Videos-Row: $id" widget.initWidget( widgetLayout = widgetLayout, playerStyle = customizePlayerStyle, dataSource = dataSource, cachingLevel = cachingLevel, widgetId = widgetId, widgetDelegate = widgetDelegate, shouldOrderWidgetByReadStatus = shouldOrderWidgetByReadStatus, playbackConfiguration = customizePlaybackConfiguration, perItemStyleOverrides = perItemStylesOverridesMap ?: emptyMap() ) widget.updateWidgetLayout(widgetLayout) } private fun parseWidgetLayout(presetStyle: String?, reactWidgetLayout: ReadableMap?): BlazeWidgetLayout { val widgetLayout = presetStyle?.asWidgetLayoutPreset() ?: BlazeWidgetLayout.Presets.VideosWidget.Row.horizontalRectangles // Default val customizedWidgetLayout = applyWidgetLayoutCustomization( reactWidgetLayout = reactWidgetLayout, widgetLayout = widgetLayout, context = context ) return customizedWidgetLayout } }