fix: remove setNativeProps usage (#3605)
* fix: remove `setNativeProps` usage * code review
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package com.brentvatne.react
|
||||
|
||||
import com.brentvatne.common.toolbox.ReactBridgeUtils
|
||||
import com.brentvatne.exoplayer.ReactExoplayerView
|
||||
import com.facebook.react.bridge.ReactApplicationContext
|
||||
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
||||
import com.facebook.react.bridge.ReactMethod
|
||||
import com.facebook.react.bridge.ReadableMap
|
||||
import com.facebook.react.bridge.UiThreadUtil
|
||||
import com.facebook.react.uimanager.UIManagerModule
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
class VideoManagerModule(reactContext: ReactApplicationContext?) : ReactContextBaseJavaModule(reactContext) {
|
||||
override fun getName(): String {
|
||||
return REACT_CLASS
|
||||
}
|
||||
|
||||
private fun performOnPlayerView(reactTag: Int, callback: (ReactExoplayerView?) -> Unit) {
|
||||
UiThreadUtil.runOnUiThread {
|
||||
val view = if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
||||
reactApplicationContext.fabricUIManager?.resolveView(
|
||||
reactTag
|
||||
)
|
||||
} else {
|
||||
val uiManager = reactApplicationContext.getNativeModule(UIManagerModule::class.java)
|
||||
uiManager?.resolveView(reactTag)
|
||||
}
|
||||
|
||||
if (view is ReactExoplayerView) {
|
||||
callback(view)
|
||||
} else {
|
||||
callback(null)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun setPlayerPauseState(paused: Boolean?, reactTag: Int) {
|
||||
performOnPlayerView(reactTag) {
|
||||
it?.setPausedModifier(paused!!)
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun seek(info: ReadableMap, reactTag: Int) {
|
||||
if (!info.hasKey("time")) {
|
||||
return
|
||||
}
|
||||
|
||||
val time = ReactBridgeUtils.safeGetInt(info, "time")
|
||||
performOnPlayerView(reactTag) {
|
||||
it?.seekTo((time * 1000f).roundToInt().toLong())
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val REACT_CLASS = "VideoManager"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user