From bc76490967eb41f87d80a5daac8db7ccd682d6d3 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Sat, 31 Dec 2022 17:50:57 -0500 Subject: [PATCH] Fix crashes on changing grouping --- .../presentation/library/components/LibraryContent.kt | 7 +++++-- .../kanade/presentation/library/components/LibraryTabs.kt | 6 +++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt index 248ca7d6f..49a58f147 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue +import androidx.compose.runtime.key import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope @@ -53,8 +54,10 @@ fun LibraryContent( end = contentPadding.calculateEndPadding(LocalLayoutDirection.current), ), ) { - val coercedCurrentPage = remember { currentPage().coerceIn(0, categories.lastIndex) } - val pagerState = rememberPagerState(coercedCurrentPage) + // SY --> + val coercedCurrentPage = remember(categories) { currentPage().coerceIn(0, categories.lastIndex) } + val pagerState = key(categories) { rememberPagerState(coercedCurrentPage) } + // SY <-- val scope = rememberCoroutineScope() var isRefreshing by remember(pagerState.currentPage) { mutableStateOf(false) } diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt index c5ed121c1..706e236ff 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt @@ -19,11 +19,15 @@ fun LibraryTabs( getNumberOfMangaForCategory: (Category) -> Int?, onTabItemClick: (Int) -> Unit, ) { + // SY --> + @Suppress("NAME_SHADOWING") + val currentPageIndex = currentPageIndex.coerceAtMost(categories.lastIndex) + // SY <-- Column { ScrollableTabRow( selectedTabIndex = currentPageIndex, edgePadding = 0.dp, - indicator = { TabIndicator(it[currentPageIndex]) }, + indicator = { TabIndicator(it[currentPageIndex.coerceAtMost(categories.lastIndex)]) }, // TODO: use default when width is fixed upstream // https://issuetracker.google.com/issues/242879624 divider = {},