media viewer: fix glitch when transition from thumbnail to fullview

This commit is contained in:
ganfra 2024-09-24 16:31:47 +02:00
parent 2691e12a56
commit dc2e05bafd

View file

@ -40,6 +40,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage
import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.AsyncData
import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.core.mimetype.MimeTypes
@ -66,9 +67,6 @@ import me.saket.telephoto.flick.FlickToDismiss
import me.saket.telephoto.flick.FlickToDismissState import me.saket.telephoto.flick.FlickToDismissState
import me.saket.telephoto.flick.rememberFlickToDismissState import me.saket.telephoto.flick.rememberFlickToDismissState
import me.saket.telephoto.zoomable.ZoomSpec import me.saket.telephoto.zoomable.ZoomSpec
import me.saket.telephoto.zoomable.ZoomableState
import me.saket.telephoto.zoomable.coil.ZoomableAsyncImage
import me.saket.telephoto.zoomable.rememberZoomableImageState
import me.saket.telephoto.zoomable.rememberZoomableState import me.saket.telephoto.zoomable.rememberZoomableState
import kotlin.time.Duration import kotlin.time.Duration
@ -181,7 +179,6 @@ private fun MediaViewerPage(
mediaInfo = state.mediaInfo, mediaInfo = state.mediaInfo,
thumbnailSource = state.thumbnailSource, thumbnailSource = state.thumbnailSource,
isVisible = showThumbnail, isVisible = showThumbnail,
zoomableState = zoomableState
) )
if (showError) { if (showError) {
ErrorView( ErrorView(
@ -316,24 +313,18 @@ private fun ThumbnailView(
thumbnailSource: MediaSource?, thumbnailSource: MediaSource?,
isVisible: Boolean, isVisible: Boolean,
mediaInfo: MediaInfo, mediaInfo: MediaInfo,
zoomableState: ZoomableState,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
AnimatedVisibility( Box(
visible = isVisible, modifier = modifier.fillMaxSize(),
enter = fadeIn(), contentAlignment = Alignment.Center
exit = fadeOut()
) { ) {
Box( if (isVisible) {
modifier = modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
val mediaRequestData = MediaRequestData( val mediaRequestData = MediaRequestData(
source = thumbnailSource, source = thumbnailSource,
kind = MediaRequestData.Kind.File(mediaInfo.name, mediaInfo.mimeType) kind = MediaRequestData.Kind.File(mediaInfo.name, mediaInfo.mimeType)
) )
ZoomableAsyncImage( AsyncImage(
state = rememberZoomableImageState(zoomableState),
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
model = mediaRequestData, model = mediaRequestData,
contentScale = ContentScale.Fit, contentScale = ContentScale.Fit,