From 7b1e57c9f48a063ce1f00924d2b31cb06de863cf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 1 Mar 2024 18:25:26 +0100 Subject: [PATCH] Fix preview error of MediaVideoView. --- .../mediaviewer/api/local/LocalMediaView.kt | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaView.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaView.kt index 24143b5a95..fbf9e3c55d 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaView.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaView.kt @@ -31,6 +31,7 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.GraphicEq @@ -57,7 +58,6 @@ import androidx.compose.ui.viewinterop.AndroidView import androidx.lifecycle.Lifecycle import androidx.media3.common.MediaItem import androidx.media3.common.Player -import androidx.media3.common.util.UnstableApi import androidx.media3.ui.AspectRatioFrameLayout import androidx.media3.ui.PlayerView import io.element.android.compound.theme.ElementTheme @@ -80,7 +80,6 @@ import io.element.android.libraries.ui.strings.CommonStrings import me.saket.telephoto.zoomable.coil.ZoomableAsyncImage import me.saket.telephoto.zoomable.rememberZoomableImageState -@SuppressLint("UnsafeOptInUsageError") @Composable fun LocalMediaView( localMedia: LocalMedia?, @@ -147,13 +146,37 @@ private fun MediaImageView( } } -@UnstableApi @Composable private fun MediaVideoView( localMediaViewState: LocalMediaViewState, localMedia: LocalMedia?, onClick: () -> Unit, modifier: Modifier = Modifier, +) { + if (LocalInspectionMode.current) { + Text( + modifier = modifier + .background(ElementTheme.colors.bgSubtlePrimary) + .wrapContentSize(), + text = "A Video Player will render here", + ) + } else { + ExoPlayerMediaVideoView( + localMediaViewState = localMediaViewState, + localMedia = localMedia, + onClick = onClick, + modifier = modifier, + ) + } +} + +@SuppressLint("UnsafeOptInUsageError") +@Composable +private fun ExoPlayerMediaVideoView( + localMediaViewState: LocalMediaViewState, + localMedia: LocalMedia?, + onClick: () -> Unit, + modifier: Modifier, ) { var playableState: PlayableState.Playable by remember { mutableStateOf(PlayableState.Playable(isPlaying = false, isShowingControls = false))