From c40b13a7ea540396d42ebf8b9378ac59bb6d211d Mon Sep 17 00:00:00 2001 From: Sweetbread Date: Thu, 5 Jun 2025 21:51:04 +0300 Subject: [PATCH] fixup! ref: add MXCImage --- .../ru/risdeveau/pixeldragon/ui/item/Image.kt | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/ui/item/Image.kt b/app/src/main/java/ru/risdeveau/pixeldragon/ui/item/Image.kt index 87d3c25..a09de9e 100755 --- a/app/src/main/java/ru/risdeveau/pixeldragon/ui/item/Image.kt +++ b/app/src/main/java/ru/risdeveau/pixeldragon/ui/item/Image.kt @@ -5,7 +5,6 @@ package ru.risdeveau.pixeldragon.ui.item -import android.annotation.SuppressLint import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize @@ -28,20 +27,18 @@ import ru.risdeveau.pixeldragon.api.mxcToUrl import ru.risdeveau.pixeldragon.token import splitties.init.appCtx -@SuppressLint("StateFlowValueCalledInComposition") + +enum class ImageLoadState { + Loading, Success, Error +} + @Composable fun MXCImage( mxcUrl: String, modifier: Modifier = Modifier, contentDescription: String = "" ) { - data class ImageLoadState( - val isLoading: Boolean = false, - val isSuccess: Boolean = false, - val error: Throwable? = null - ) - - val loadState = remember { mutableStateOf(ImageLoadState()) } + val loadState = remember { mutableStateOf(ImageLoadState.Loading) } val painter = rememberAsyncImagePainter( model = ImageRequest.Builder(appCtx) .data(mxcToUrl(mxcUrl)) @@ -54,10 +51,9 @@ fun MXCImage( .build(), onState = { state -> loadState.value = when (state) { - is AsyncImagePainter.State.Loading -> ImageLoadState(isLoading = true) - is AsyncImagePainter.State.Success -> ImageLoadState(isSuccess = true) - is AsyncImagePainter.State.Error -> ImageLoadState(error = state.result.throwable) - else -> ImageLoadState() + is AsyncImagePainter.State.Loading -> ImageLoadState.Loading + is AsyncImagePainter.State.Success -> ImageLoadState.Success + else -> ImageLoadState.Error } } ) @@ -73,10 +69,10 @@ fun MXCImage( modifier = Modifier.fillMaxSize() ) - if (loadState.value.isLoading) { - CircularProgressIndicator() - } else if (loadState.value.error != null) { - Icon(Icons.Outlined.Warning, "Error") + when (loadState.value) { + ImageLoadState.Loading -> CircularProgressIndicator() + ImageLoadState.Error -> Icon(Icons.Outlined.Warning, "Error") + ImageLoadState.Success -> Unit } } } \ No newline at end of file