diff --git a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt index e7354d11e..1aaebdaa9 100644 --- a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt @@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.calculateEndPadding import androidx.compose.foundation.layout.calculateStartPadding import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Tab import androidx.compose.material3.TabRow import androidx.compose.runtime.Composable @@ -80,9 +81,8 @@ fun TabbedScreen( Tab( selected = state.currentPage == index, onClick = { scope.launch { state.animateScrollToPage(index) } }, - text = { - TabText(stringResource(tab.titleRes), tab.badgeNumber, state.currentPage == index) - }, + text = { TabText(text = stringResource(tab.titleRes), badgeCount = tab.badgeNumber) }, + unselectedContentColor = MaterialTheme.colorScheme.onSurface, ) } } diff --git a/app/src/main/java/eu/kanade/presentation/components/Tabs.kt b/app/src/main/java/eu/kanade/presentation/components/Tabs.kt index e894d022d..c24a13546 100644 --- a/app/src/main/java/eu/kanade/presentation/components/Tabs.kt +++ b/app/src/main/java/eu/kanade/presentation/components/Tabs.kt @@ -31,7 +31,6 @@ fun TabIndicator(currentTabPosition: TabPosition) { fun TabText( text: String, badgeCount: Int? = null, - isCurrentPage: Boolean, ) { val pillAlpha = if (isSystemInDarkTheme()) 0.12f else 0.08f @@ -40,7 +39,6 @@ fun TabText( ) { Text( text = text, - color = if (isCurrentPage) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onBackground, // SY --> maxLines = 1, overflow = TextOverflow.Ellipsis, 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 430cbb289..9e4e54488 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 @@ -77,12 +77,13 @@ fun LibraryContent( if (isLibraryEmpty.not() && showPageTabs && categories.size > 1) { LibraryTabs( - state = pagerState, categories = categories, + currentPageIndex = pagerState.currentPage.coerceAtMost(categories.lastIndex), showMangaCount = showMangaCount, getNumberOfMangaForCategory = getNumberOfMangaForCategory, isDownloadOnly = isDownloadOnly, isIncognitoMode = isIncognitoMode, + onTabItemClick = { scope.launch { pagerState.animateScrollToPage(it) } }, // SY --> getCategoryName = { category, name -> val context = LocalContext.current 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 863ec3ae1..d9da48bd8 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 @@ -1,65 +1,58 @@ package eu.kanade.presentation.library.components import androidx.compose.foundation.layout.Column +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ScrollableTabRow import androidx.compose.material3.Tab import androidx.compose.runtime.Composable import androidx.compose.runtime.State -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.unit.dp import eu.kanade.domain.category.model.Category import eu.kanade.presentation.category.visualName import eu.kanade.presentation.components.AppStateBanners import eu.kanade.presentation.components.Divider -import eu.kanade.presentation.components.PagerState import eu.kanade.presentation.components.TabIndicator import eu.kanade.presentation.components.TabText -import kotlinx.coroutines.launch @Composable fun LibraryTabs( - state: PagerState, categories: List, + currentPageIndex: Int, showMangaCount: Boolean, isDownloadOnly: Boolean, isIncognitoMode: Boolean, getNumberOfMangaForCategory: @Composable (Long) -> State, + onTabItemClick: (Int) -> Unit, // SY --> getCategoryName: @Composable (Category, String) -> String, // SY <-- ) { - val scope = rememberCoroutineScope() - Column { ScrollableTabRow( - selectedTabIndex = state.currentPage.coerceAtMost(categories.lastIndex), + selectedTabIndex = currentPageIndex, edgePadding = 0.dp, - indicator = { TabIndicator(it[state.currentPage.coerceAtMost(categories.lastIndex)]) }, + indicator = { TabIndicator(it[currentPageIndex]) }, // TODO: use default when width is fixed upstream // https://issuetracker.google.com/issues/242879624 divider = {}, ) { categories.forEachIndexed { index, category -> - val count by if (showMangaCount) { - getNumberOfMangaForCategory(category.id) - } else { - remember { mutableStateOf(null) } - } Tab( - selected = state.currentPage == index, - onClick = { scope.launch { state.animateScrollToPage(index) } }, + selected = currentPageIndex == index, + onClick = { onTabItemClick(index) }, text = { TabText( // SY --> text = getCategoryName(category, category.visualName), - // SY <-- - count, - state.currentPage == index, + // SY <--, + badgeCount = if (showMangaCount) { + getNumberOfMangaForCategory(category.id) + } else { + null + }?.value, ) }, + unselectedContentColor = MaterialTheme.colorScheme.onSurface, ) } }