package com.applicaster.quickbrickplayerplugin.mobile import android.content.Context import android.util.Log import com.applicaster.oasisplayer.OasisContainerView import com.applicaster.oasisplayer.player.OasisPlayerViewHolder import com.applicaster.quickbrickplayerplugin.quickbrickInterface.QuickBrickPlayer import com.facebook.react.bridge.* import com.facebook.react.uimanager.SimpleViewManager import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.annotations.ReactProp import com.google.android.exoplayer2.PlaybackParameters class QuickBrickOasisPlayerManager(context: ReactApplicationContext) : SimpleViewManager() { override fun getName(): String { return REACT_CLASS } public override fun createViewInstance(context: ThemedReactContext): OasisContainerView { val view = OasisContainerView(context as Context) val listener = object : LifecycleEventListener { override fun onHostResume() { Log.d("QB-Oasis", "QB-Oasis onHostResume") // view.player.takeIf { it != null }.apply { view.player?.playWhenReady = true } } override fun onHostPause() { Log.d("QB-Oasis", "QB-Oasis onHostPause") // view.player.takeIf { it != null }.apply { view.player?.playWhenReady = false } } override fun onHostDestroy() { Log.d("QB-Oasis", "QB-Oasis onHostDestroy") } } context.addLifecycleEventListener(listener) return view } @ReactProp(name = "src") fun setSrc(view: OasisContainerView, source: ReadableMap) { // source.let { view.setSource(it) } Log.d("QB-Oasis", "QB-Oasis setSrc $source") } @ReactProp(name = "entry") fun setEntry(view: OasisContainerView, source: ReadableMap) { source.let { view.setPlayableItem(it) } Log.d("QB-Oasis", "QB-Oasis setEntry $source") } @Deprecated("Use entry instead") @ReactProp(name = "playableItem") fun setPlayableItem(view: OasisContainerView, source: ReadableMap) { Log.d("QB-Oasis", "QB-Oasis setPlayableItem $source") source.let { view.setPlayableItem(it) } } @ReactProp(name = "onKeyChanged") fun onKeyChanged(view: OasisContainerView, event: ReadableMap?) { Log.d("QB-Oasis", "QB-Oasis onKeyChanged $event") } @ReactProp(name = "playerState") fun setPlayerState(view: OasisContainerView, state: String?) { Log.d("QB-Oasis", "QB-Oasis setPlayerState $state") view.setPlayerState(state) } @ReactProp(name = "paused") fun setPlayerState(view: OasisContainerView, state: Boolean?) { Log.d("QB-Oasis", "QB-Oasis setPlayerState $state") // state?.let { paused -> // if (paused) { // view.updateState("PAUSE") // } else { // view.updateState("START") // } // } } @ReactProp(name = "removed") fun onPlayerRemoved(view: OasisContainerView, state: Boolean?) { // source.let { view.setSource(it) } Log.d("QB-Oasis", "QB-Oasis onPlayerRemoved $state") } @ReactProp(name = "showNativeSubtitles") fun setShowNativeSubtitles(view: OasisContainerView, state: Boolean?) { state?.let { // view.showNativeSubtitles(it) } } @ReactProp(name = "subtitlesLanguage") fun setSubtitlesLanguage(view: OasisContainerView, lang: String) { // view.showSubtitlesLanguage(lang) } @ReactProp(name = "audioTrackLanguage") fun setAudioTrackLanguage(view: OasisContainerView, lang: String) { // view.setAudioLanguage(lang) } @ReactProp(name = "seek") fun setSeek(view: OasisContainerView, seek: ReadableMap) { // seek.takeIf { it.hasKey("time") } // ?.getDouble("time") // ?.let { view.playerSeekTo((it * 1000).toLong()) } } @ReactProp(name = "rate") fun setRate(view: OasisContainerView, rate: Double) { // view.setVideoRate(rate.toFloat()) } @ReactProp(name = "pluginConfiguration") fun setPluginConfiguration(view: OasisContainerView, configurations: ReadableMap) { Log.d("QB-Oasis", "QB-Oasis setPluginConfiguration $configurations") // view.setPluginConfiguration(configurations) } @ReactMethod fun detachView() { Log.d("QB-Oasis", "QB-Oasis detachView") } override fun receiveCommand(root: OasisContainerView, commandId: String?, args: ReadableArray?) { super.receiveCommand(root, commandId, args) Log.d("QB-Oasis", "QB-Oasis receiveCommand $commandId args: $args") } companion object { val REACT_CLASS = "QuickBrickOasisPlayerView" } override fun getExportedCustomBubblingEventTypeConstants(): Map { return QuickBrickPlayer.registerCallbackProps() } }