diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt index 663266e8d..ec3253b6a 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt @@ -15,6 +15,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.paging.LoadState import androidx.paging.compose.LazyPagingItems +import androidx.paging.compose.itemKey import eu.kanade.presentation.library.components.CommonMangaItemDefaults import eu.kanade.presentation.library.components.MangaComfortableGridItem import eu.kanade.tachiyomi.R @@ -46,12 +47,18 @@ fun BrowseSourceComfortableGrid( } } - items(mangaList.itemCount) { index -> + items( + count = mangaList.itemCount, + // SY --> + key = mangaList.itemKey { it.value.first.id }, + // SY <-- + ) { index -> // SY --> val pair by mangaList[index]?.collectAsState() ?: return@items val manga = pair.first val metadata = pair.second // SY <-- + BrowseSourceComfortableGridItem( manga = manga, // SY --> diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt index f6ae57c6b..61518b93c 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt @@ -15,6 +15,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.paging.LoadState import androidx.paging.compose.LazyPagingItems +import androidx.paging.compose.itemKey import eu.kanade.presentation.library.components.CommonMangaItemDefaults import eu.kanade.presentation.library.components.MangaCompactGridItem import eu.kanade.tachiyomi.R @@ -46,12 +47,18 @@ fun BrowseSourceCompactGrid( } } - items(mangaList.itemCount) { index -> + items( + count = mangaList.itemCount, + // SY --> + key = mangaList.itemKey { it.value.first.id }, + // SY <-- + ) { index -> // SY --> val pair by mangaList[index]?.collectAsState() ?: return@items val manga = pair.first val metadata = pair.second // SY <-- + BrowseSourceCompactGridItem( manga = manga, // SY --> diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceEHentaiList.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceEHentaiList.kt index b42bebfdf..babc57442 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceEHentaiList.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceEHentaiList.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.paging.LoadState import androidx.paging.compose.LazyPagingItems -import androidx.paging.compose.items +import androidx.paging.compose.itemKey import com.gowtham.ratingbar.RatingBar import com.gowtham.ratingbar.RatingBarConfig import eu.kanade.presentation.manga.components.MangaCover @@ -66,12 +66,14 @@ fun BrowseSourceEHentaiList( } } - items(mangaList) { initialManga -> - val pair by initialManga?.collectAsState() ?: return@items + items( + count = mangaList.itemCount, + key = mangaList.itemKey { it.value.first.id }, + ) { index -> + val pair by mangaList[index]?.collectAsState() ?: return@items val manga = pair.first - // SY --> val metadata = pair.second - // SY <-- + BrowseSourceEHentaiListItem( manga = manga, // SY --> diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt index 1e7a4901c..4cd4d9965 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt @@ -11,7 +11,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.paging.LoadState import androidx.paging.compose.LazyPagingItems -import androidx.paging.compose.items +import androidx.paging.compose.itemKey import eu.kanade.presentation.library.components.CommonMangaItemDefaults import eu.kanade.presentation.library.components.MangaListItem import eu.kanade.tachiyomi.R @@ -40,10 +40,14 @@ fun BrowseSourceList( } } - items(mangaList) { mangaflow -> - mangaflow ?: return@items + items( + count = mangaList.itemCount, // SY --> - val pair by mangaflow.collectAsState() + key = mangaList.itemKey { it.value.first.id }, + // SY <-- + ) { index -> + // SY --> + val pair by mangaList[index]?.collectAsState() ?: return@items val manga = pair.first val metadata = pair.second // SY <-- diff --git a/gradle/androidx.versions.toml b/gradle/androidx.versions.toml index d4d01c9f9..d7c2864d8 100644 --- a/gradle/androidx.versions.toml +++ b/gradle/androidx.versions.toml @@ -15,7 +15,7 @@ splashscreen = "androidx.core:core-splashscreen:1.0.0-alpha02" recyclerview = "androidx.recyclerview:recyclerview:1.3.0" viewpager = "androidx.viewpager:viewpager:1.1.0-alpha01" glance = "androidx.glance:glance-appwidget:1.0.0-alpha03" -profileinstaller = "androidx.profileinstaller:profileinstaller:1.3.0" +profileinstaller = "androidx.profileinstaller:profileinstaller:1.3.1" lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref = "lifecycle_version" } lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle_version" } @@ -25,7 +25,7 @@ work-runtime = "androidx.work:work-runtime-ktx:2.8.1" guava = "com.google.guava:guava:31.1-android" paging-runtime = "androidx.paging:paging-runtime:3.1.1" -paging-compose = "androidx.paging:paging-compose:1.0.0-alpha18" +paging-compose = "androidx.paging:paging-compose:1.0.0-alpha19" benchmark-macro = "androidx.benchmark:benchmark-macro-junit4:1.2.0-alpha13" test-ext = "androidx.test.ext:junit-ktx:1.1.5"