From 46bb2d69bf2c0c5cbfb6c469c252d69a059bc5c2 Mon Sep 17 00:00:00 2001 From: Infi Date: Sat, 9 Dec 2023 19:57:49 +0100 Subject: [PATCH] chore: replace view library with equivalent compose library Signed-off-by: Infi --- app/build.gradle | 6 ++--- .../activities/media/ImageViewActivity.kt | 27 ++++++++++--------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 89c50d84..c8428af1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -239,7 +239,6 @@ dependencies { // Libraries used for legacy View-based UI implementation "androidx.constraintlayout:constraintlayout:2.2.0-alpha13" - implementation 'com.github.MikeOrtiz:TouchImageView:3.3' implementation "androidx.appcompat:appcompat:1.7.0-alpha03" implementation 'com.google.android.material:material:1.10.0' @@ -252,12 +251,13 @@ dependencies { // Markdown implementation "com.github.discord:SimpleAST:2.7.0" - // AndroidX Media3 w/ ExoPlayer implementation "androidx.media3:media3-exoplayer:$media3_version" implementation "androidx.media3:media3-exoplayer-hls:$media3_version" implementation "androidx.media3:media3-datasource-okhttp:$media3_version" implementation "androidx.media3:media3-ui:$media3_version" - // Colour picker + // Compose libraries implementation "com.github.skydoves:colorpicker-compose:1.0.5" + implementation "me.saket.telephoto:zoomable-image:1.0.0-alpha02" + implementation "me.saket.telephoto:zoomable-image-glide:1.0.0-alpha02" } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/activities/media/ImageViewActivity.kt b/app/src/main/java/chat/revolt/activities/media/ImageViewActivity.kt index 302cefbc..96217ff5 100644 --- a/app/src/main/java/chat/revolt/activities/media/ImageViewActivity.kt +++ b/app/src/main/java/chat/revolt/activities/media/ImageViewActivity.kt @@ -38,7 +38,6 @@ import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.viewinterop.AndroidView import androidx.core.view.WindowCompat import chat.revolt.R import chat.revolt.api.REVOLT_FILES @@ -49,10 +48,14 @@ import chat.revolt.api.settings.SyncedSettings import chat.revolt.components.generic.PageHeader import chat.revolt.provider.getAttachmentContentUri import chat.revolt.ui.theme.RevoltTheme -import com.bumptech.glide.Glide +import com.bumptech.glide.integration.compose.ExperimentalGlideComposeApi import io.ktor.client.request.get import io.ktor.client.statement.readBytes import kotlinx.coroutines.launch +import me.saket.telephoto.zoomable.ZoomSpec +import me.saket.telephoto.zoomable.glide.ZoomableGlideImage +import me.saket.telephoto.zoomable.rememberZoomableImageState +import me.saket.telephoto.zoomable.rememberZoomableState class ImageViewActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -79,6 +82,7 @@ class ImageViewActivity : ComponentActivity() { } } +@OptIn(ExperimentalGlideComposeApi::class) @Composable fun ImageViewScreen(resource: AutumnResource, onClose: () -> Unit = {}) { val resourceUrl = "$REVOLT_FILES/attachments/${resource.id}/${resource.filename}" @@ -260,19 +264,16 @@ fun ImageViewScreen(resource: AutumnResource, onClose: () -> Unit = {}) { .clip(RectangleShape) .fillMaxSize() ) { - AndroidView( - factory = { context -> - com.ortiz.touchview.TouchImageView(context).apply { - maxZoom = 10f - doubleTapScale = 3f - } - }, - update = { - Glide.with(it).load(resourceUrl).into(it) - }, + ZoomableGlideImage( + model = resourceUrl, + contentDescription = null, + state = rememberZoomableImageState( + rememberZoomableState( + zoomSpec = ZoomSpec(maxZoomFactor = 10f) + ) + ), modifier = Modifier .fillMaxSize() - .background(MaterialTheme.colorScheme.background) ) } }