feat: Add loading of blur preview for images in ZoomableImage component
This commit is contained in:
@@ -300,6 +300,7 @@ private fun ZoomableImage(
|
|||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
|
|
||||||
var bitmap by remember { mutableStateOf<Bitmap?>(null) }
|
var bitmap by remember { mutableStateOf<Bitmap?>(null) }
|
||||||
|
var previewBitmap by remember { mutableStateOf<Bitmap?>(null) }
|
||||||
var isLoading by remember { mutableStateOf(true) }
|
var isLoading by remember { mutableStateOf(true) }
|
||||||
var loadError by remember { mutableStateOf<String?>(null) }
|
var loadError by remember { mutableStateOf<String?>(null) }
|
||||||
|
|
||||||
@@ -331,6 +332,21 @@ private fun ZoomableImage(
|
|||||||
val minScale = 1f
|
val minScale = 1f
|
||||||
val maxScale = 5f
|
val maxScale = 5f
|
||||||
|
|
||||||
|
// Load preview first
|
||||||
|
LaunchedEffect(image.preview) {
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
try {
|
||||||
|
// Декодируем blur preview (после ::)
|
||||||
|
if (image.preview.contains("::")) {
|
||||||
|
val blurPart = image.preview.substringAfter("::")
|
||||||
|
previewBitmap = base64ToBitmapSafe(blurPart)
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(TAG, "Failed to load preview: ${e.message}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Load image
|
// Load image
|
||||||
LaunchedEffect(image.attachmentId) {
|
LaunchedEffect(image.attachmentId) {
|
||||||
isLoading = true
|
isLoading = true
|
||||||
@@ -514,6 +530,16 @@ private fun ZoomableImage(
|
|||||||
},
|
},
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
|
// Blur preview в фоне
|
||||||
|
if (previewBitmap != null && bitmap == null) {
|
||||||
|
Image(
|
||||||
|
bitmap = previewBitmap!!.asImageBitmap(),
|
||||||
|
contentDescription = "Preview",
|
||||||
|
modifier = Modifier.fillMaxSize(),
|
||||||
|
contentScale = ContentScale.Fit
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
when {
|
when {
|
||||||
isLoading -> {
|
isLoading -> {
|
||||||
CircularProgressIndicator(
|
CircularProgressIndicator(
|
||||||
|
|||||||
Reference in New Issue
Block a user