fix: ios player not recreating after switching source/episode

This commit is contained in:
tapframe 2026-05-02 14:05:47 +05:30
parent c890cc3400
commit 4f62be91b8

View file

@ -34,23 +34,22 @@ actual fun PlatformPlayerSurface(
onError: (String?) -> Unit, onError: (String?) -> Unit,
) { ) {
sanitizePlaybackResponseHeaders(sourceResponseHeaders) sanitizePlaybackResponseHeaders(sourceResponseHeaders)
val latestOnControllerReady = rememberUpdatedState(onControllerReady)
val latestOnSnapshot = rememberUpdatedState(onSnapshot) val latestOnSnapshot = rememberUpdatedState(onSnapshot)
val latestOnError = rememberUpdatedState(onError) val latestOnError = rememberUpdatedState(onError)
val bridge = remember(sourceUrl) { val bridge = remember {
NuvioPlayerBridgeFactory.create() NuvioPlayerBridgeFactory.create()
} }
if (bridge == null) { if (bridge == null) {
LaunchedEffect(Unit) { LaunchedEffect(Unit) {
onError("MPV player engine not available. Please rebuild the app.") latestOnError.value("MPV player engine not available. Please rebuild the app.")
} }
return return
} }
// Create controller val controller = remember(bridge) {
LaunchedEffect(bridge) {
onControllerReady(
object : PlayerEngineController { object : PlayerEngineController {
override fun play() { override fun play() {
bridge.play() bridge.play()
@ -207,7 +206,10 @@ actual fun PlatformPlayerSurface(
) )
} }
} }
) }
LaunchedEffect(controller, sourceUrl, sourceAudioUrl, sourceHeaders, sourceResponseHeaders) {
latestOnControllerReady.value(controller)
} }
// Load file and set initial state // Load file and set initial state