package com.blaze.rtnblazesdk.utils import com.blaze.blazesdk.features.moments.models.configuration.BlazeMomentsLoopBehavior import com.blaze.blazesdk.features.moments.models.configuration.BlazeMomentsPlaybackConfiguration import com.blaze.blazesdk.features.videos.models.configuration.BlazeVideosPlaybackConfiguration import com.blaze.blazesdk.shared.BlazeSDK import com.facebook.react.bridge.ReadableMap fun ReadableMap?.extractVideosPlaybackConfiguration(): BlazeVideosPlaybackConfiguration? { val map = this ?: return null val config = BlazeSDK.getDefaultVideosPlaybackConfiguration() if (map.hasKey("multiAspectRatio")) { config.multiAspectRatio = map.getBoolean("multiAspectRatio") } if (map.hasKey("shouldOpenInLandscape")) { config.shouldOpenOnLandscape = map.getBoolean("shouldOpenInLandscape") } if (map.hasKey("pipConfiguration")) { map.getMap("pipConfiguration")?.let { pipMap -> if (pipMap.hasKey("enterPipOnAppBackground")) { config.pip.enterPipOnAppBackground = pipMap.getBoolean("enterPipOnAppBackground") } } } return config } fun ReadableMap?.extractMomentsPlaybackConfiguration(): BlazeMomentsPlaybackConfiguration? { val map = this ?: return null val config = BlazeMomentsPlaybackConfiguration.base() if (map.hasKey("loopBehavior")) { map.getMap("loopBehavior")?.let { loopBehaviorMap -> val type = loopBehaviorMap.getString("type") when (type) { "infiniteLoop" -> config.loopBehavior = BlazeMomentsLoopBehavior.InfiniteLoop "loopAndAdvance" -> { val numberOfPlays = if (loopBehaviorMap.hasKey("numberOfPlays")) loopBehaviorMap.getInt("numberOfPlays") else 1 config.loopBehavior = BlazeMomentsLoopBehavior.LoopAndAdvance( numberOfPlays = maxOf(1, numberOfPlays) ) } } } } return config }