diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/PagePreviews.kt b/app/src/main/java/eu/kanade/presentation/manga/components/PagePreviews.kt index b7757f1b1..e805d6162 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/PagePreviews.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/PagePreviews.kt @@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable @@ -19,6 +20,7 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp @@ -47,11 +49,13 @@ fun PagePreviews( Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(8.dp), ) { pagePreviewState.pagePreviews.take(4 * itemPerRowCount).chunked(itemPerRowCount).forEach { Row( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp), verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(16.dp), ) { it.forEach { page -> PagePreview( @@ -80,8 +84,8 @@ fun PagePreview( ) { Column( modifier - .clickable { onOpenPage(page.index - 1) } - .padding(horizontal = 8.dp, vertical = 4.dp), + .clip(MaterialTheme.shapes.small) + .clickable { onOpenPage(page.index - 1) }, horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.SpaceBetween, ) { @@ -90,10 +94,10 @@ fun PagePreview( contentDescription = null, loading = { val progress by page.progress.collectAsState() - if (progress != -1) { - CircularProgressIndicator(progress / 0.01F) - } else { + if (progress < 0) { CircularProgressIndicator() + } else { + CircularProgressIndicator(progress / 0.01F) } }, success = { @@ -101,7 +105,8 @@ fun PagePreview( contentDescription = null, modifier = Modifier .width(120.dp) - .heightIn(max = 200.dp), + .heightIn(max = 200.dp) + .clip(MaterialTheme.shapes.small), contentScale = ContentScale.FillWidth, ) }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index 94b3c905f..b750df898 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -10,8 +10,8 @@ import eu.kanade.domain.manga.model.COMIC_INFO_FILE import eu.kanade.domain.manga.model.ComicInfo import eu.kanade.domain.manga.model.Manga import eu.kanade.domain.manga.model.getComicInfo -import eu.kanade.domain.track.interactor.GetTracks import eu.kanade.domain.source.service.SourcePreferences +import eu.kanade.domain.track.interactor.GetTracks import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.database.models.toDomainChapter diff --git a/app/src/main/java/exh/pagepreview/components/PagePreviewScreen.kt b/app/src/main/java/exh/pagepreview/components/PagePreviewScreen.kt index db519b52a..619b4f175 100644 --- a/app/src/main/java/exh/pagepreview/components/PagePreviewScreen.kt +++ b/app/src/main/java/exh/pagepreview/components/PagePreviewScreen.kt @@ -2,10 +2,13 @@ package exh.pagepreview.components import androidx.compose.animation.core.AnimationState import androidx.compose.animation.core.animateTo +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.UTurnRight @@ -17,7 +20,6 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable -import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.key import androidx.compose.runtime.mutableStateOf @@ -70,8 +72,12 @@ fun PagePreviewScreen( PagePreviewState.Loading -> LoadingScreen() is PagePreviewState.Success -> { BoxWithConstraints(Modifier.fillMaxSize()) { - val itemPerRowCount by derivedStateOf { (maxWidth / 120.dp).floor() } - val items by derivedStateOf { state.pagePreviews.chunked(itemPerRowCount) } + val itemPerRowCount = remember(maxWidth) { + (maxWidth / 120.dp).floor() + } + val items = remember(state.pagePreviews, itemPerRowCount) { + state.pagePreviews.chunked(itemPerRowCount) + } val lazyListState = key(state.page) { rememberLazyListState() } @@ -79,20 +85,20 @@ fun PagePreviewScreen( state = lazyListState, modifier = Modifier, contentPadding = paddingValues + topPaddingValues, + verticalArrangement = Arrangement.spacedBy(8.dp), ) { - items.forEach { - item { - Row( - modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - ) { - it.forEach { page -> - PagePreview( - modifier = Modifier.weight(1F), - page = page, - onOpenPage = onOpenPage, - ) - } + items(items) { + Row( + modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(16.dp), + ) { + it.forEach { page -> + PagePreview( + modifier = Modifier.weight(1F), + page = page, + onOpenPage = onOpenPage, + ) } } }