From 4ee468d7ebe069c815b97c05d8bac24db96ded53 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Mon, 28 Sep 2026 11:42:21 -0500 Subject: [PATCH] refactor(mediaviewer): replace android-gif-drawable with Coil GIFs in the media viewer are now decoded by the app's existing Coil ImageLoader (ImageDecoderDecoder on API 28+, GifDecoder below) and shown in the same zoomable view as other images. This drops the native pl.droidsonroids.gif dependency and its verification metadata. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: rapterjet2004 --- app/build.gradle.kts | 1 - .../activities/MediaViewerScreen.kt | 28 +++++-------- gradle/verification-metadata.xml | 39 ------------------- 3 files changed, 9 insertions(+), 59 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index afa6f09c4f..0e5462ca68 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -305,7 +305,6 @@ dependencies { implementation("androidx.media3:media3-effect:$media3Version") implementation("com.github.chrisbanes:PhotoView:2.3.0") - implementation("pl.droidsonroids.gif:android-gif-drawable:1.2.32") implementation("io.noties.markwon:core:$markwonVersion") implementation("io.noties.markwon:ext-strikethrough:$markwonVersion") diff --git a/app/src/main/java/com/nextcloud/talk/mediaviewer/activities/MediaViewerScreen.kt b/app/src/main/java/com/nextcloud/talk/mediaviewer/activities/MediaViewerScreen.kt index 60894e910a..b1c32191f2 100644 --- a/app/src/main/java/com/nextcloud/talk/mediaviewer/activities/MediaViewerScreen.kt +++ b/app/src/main/java/com/nextcloud/talk/mediaviewer/activities/MediaViewerScreen.kt @@ -6,6 +6,7 @@ */ package com.nextcloud.talk.mediaviewer.activities +import android.graphics.drawable.Animatable import android.graphics.drawable.Drawable import android.util.Log import android.view.View @@ -89,11 +90,8 @@ import com.nextcloud.talk.utils.DateConstants import com.nextcloud.talk.utils.DateUtils import com.nextcloud.talk.utils.DrawableUtils import com.nextcloud.talk.utils.Mimetype -import com.nextcloud.talk.utils.MimetypeUtils import java.io.File import kotlinx.coroutines.launch -import pl.droidsonroids.gif.GifDrawable -import pl.droidsonroids.gif.GifImageView private const val TOOLBAR_ALPHA = 0.6f private const val MAX_SCALE = 6.0f @@ -306,7 +304,6 @@ private fun MediaPage( controllerExtraBottomInsetPx: Int ) { val isVideo = item.mimeType.startsWith(Mimetype.VIDEO_PREFIX) - val isGif = MimetypeUtils.isGif(item.mimeType) Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { when { @@ -320,7 +317,6 @@ private fun MediaPage( } else { PreviewPlaceholder(item, onToggleControls = onToggleControls) } - isGif -> GifPage(localPath = localPath, onToggleControls = onToggleControls) else -> ImagePage(localPath = localPath, onToggleControls = onToggleControls) } } @@ -338,19 +334,6 @@ private fun PreviewPlaceholder(item: MediaViewerItem, onToggleControls: () -> Un } } -@Composable -private fun GifPage(localPath: String, onToggleControls: () -> Unit) { - AndroidView( - factory = { ctx -> - GifImageView(ctx).apply { - setImageDrawable(GifDrawable(localPath)) - setOnClickListener { onToggleControls() } - } - }, - modifier = Modifier.fillMaxSize() - ) -} - @Composable private fun ImagePage(localPath: String, onToggleControls: () -> Unit) { val context = LocalContext.current @@ -379,7 +362,14 @@ private fun ImagePage(localPath: String, onToggleControls: () -> Unit) { setOnOutsidePhotoTapListener { onToggleControls() } } }, - update = { photoView -> drawable?.let { photoView.setImageDrawable(it) } }, + update = { photoView -> + drawable?.let { + photoView.setImageDrawable(it) + // Animated images (GIF, animated WebP/HEIF) decoded by Coil are not started automatically + (it as? Animatable)?.start() + } + }, + onRelease = { photoView -> (photoView.drawable as? Animatable)?.stop() }, modifier = Modifier.fillMaxSize() ) } diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 4b7cd06cb4..08cd97c0a0 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -190,7 +190,6 @@ - @@ -402,12 +401,6 @@ - - - - - - @@ -33979,38 +33972,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -