Merge pull request #3978 from element-hq/feature/bma/disableVideoAutoPlay

Do not auto-play videos.
This commit is contained in:
Benoit Marty 2024-12-02 17:39:59 +01:00 committed by GitHub
commit 22c8622576

View file

@ -80,11 +80,10 @@ private fun ExoPlayerMediaVideoView(
localMedia: LocalMedia?, localMedia: LocalMedia?,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val isControllerVisibleByDefault = LocalInspectionMode.current
var mediaPlayerControllerState: MediaPlayerControllerState by remember { var mediaPlayerControllerState: MediaPlayerControllerState by remember {
mutableStateOf( mutableStateOf(
MediaPlayerControllerState( MediaPlayerControllerState(
isVisible = isControllerVisibleByDefault, isVisible = true,
isPlaying = false, isPlaying = false,
progressInMillis = 0, progressInMillis = 0,
durationInMillis = 0, durationInMillis = 0,
@ -122,18 +121,16 @@ private fun ExoPlayerMediaVideoView(
override fun onTimelineChanged(timeline: Timeline, reason: Int) { override fun onTimelineChanged(timeline: Timeline, reason: Int) {
if (reason == Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE) { if (reason == Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE) {
mediaPlayerControllerState = mediaPlayerControllerState.copy( exoPlayer.duration.takeIf { it >= 0 }
durationInMillis = exoPlayer.duration, ?.let {
) mediaPlayerControllerState = mediaPlayerControllerState.copy(
durationInMillis = it,
)
}
} }
} }
} }
LaunchedEffect(Unit) {
exoPlayer.addListener(playerListener)
exoPlayer.prepare()
}
var autoHideController by remember { mutableIntStateOf(0) } var autoHideController by remember { mutableIntStateOf(0) }
LaunchedEffect(autoHideController) { LaunchedEffect(autoHideController) {
@ -238,7 +235,8 @@ private fun ExoPlayerMediaVideoView(
OnLifecycleEvent { _, event -> OnLifecycleEvent { _, event ->
when (event) { when (event) {
Lifecycle.Event.ON_RESUME -> exoPlayer.play() Lifecycle.Event.ON_CREATE -> exoPlayer.addListener(playerListener)
Lifecycle.Event.ON_RESUME -> exoPlayer.prepare()
Lifecycle.Event.ON_PAUSE -> exoPlayer.pause() Lifecycle.Event.ON_PAUSE -> exoPlayer.pause()
Lifecycle.Event.ON_DESTROY -> { Lifecycle.Event.ON_DESTROY -> {
exoPlayer.release() exoPlayer.release()