From ee9e102eb22d2b054f16ea05b867e162c60601fa Mon Sep 17 00:00:00 2001 From: davotoula Date: Fri, 12 Sep 2025 10:54:17 +0200 Subject: [PATCH] removed lazy component from 20+ images case to avoid nesting lazy components --- .../amethyst/ui/components/ImageGallery.kt | 57 +++---------------- 1 file changed, 9 insertions(+), 48 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ImageGallery.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ImageGallery.kt index d7bbaf7f62..2f355ecf0b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ImageGallery.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ImageGallery.kt @@ -22,19 +22,13 @@ package com.vitorpamplona.amethyst.ui.components import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.lazy.grid.GridCells -import androidx.compose.foundation.lazy.grid.LazyVerticalGrid -import androidx.compose.foundation.lazy.grid.items import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale @@ -206,58 +200,25 @@ private fun ManyImageGallery( else -> 4 } - if (images.size <= 20) { - // Non-lazy for small sets - Column(verticalArrangement = Arrangement.spacedBy(Size5dp)) { - images.chunked(columns).forEach { rowImages -> - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.spacedBy(Size5dp), - ) { - rowImages.forEach { image -> - GalleryImage( - image = image, - allImages = images, - modifier = Modifier.weight(1f).aspectRatio(1f), - roundedCorner = roundedCorner, - contentScale = ContentScale.Crop, - accountViewModel = accountViewModel, - ) - } - repeat(columns - rowImages.size) { - Spacer(Modifier.weight(1f)) - } - } - } - } - } else { - // Lazy for large sets — expands fully, no independent scroll - BoxWithConstraints(modifier = Modifier.fillMaxWidth()) { - val totalSpacing = Size5dp * (columns - 1) - val imageSize = (maxWidth - totalSpacing) / columns - val rows = (images.size + columns - 1) / columns - val gridHeight = (imageSize * rows) + (Size5dp * (rows - 1)) - - LazyVerticalGrid( - columns = GridCells.Fixed(columns), - modifier = - Modifier - .fillMaxWidth() - .height(gridHeight), - verticalArrangement = Arrangement.spacedBy(Size5dp), + Column(verticalArrangement = Arrangement.spacedBy(Size5dp)) { + images.chunked(columns).forEach { rowImages -> + Row( + modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(Size5dp), - userScrollEnabled = false, ) { - items(images) { image -> + rowImages.forEach { image -> GalleryImage( image = image, allImages = images, - modifier = Modifier.size(imageSize), + modifier = Modifier.weight(1f).aspectRatio(1f), roundedCorner = roundedCorner, contentScale = ContentScale.Crop, accountViewModel = accountViewModel, ) } + repeat(columns - rowImages.size) { + Spacer(Modifier.weight(1f)) + } } } }