Wait for library to load before creating Pager (#7623)

(cherry picked from commit f8d8cf9f6a27c536ad3126de8d2d5de373248e04)

# Conflicts:
#	app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt
This commit is contained in:
Andreas 2022-07-27 15:00:09 +02:00 committed by Jobobby04
parent 1ab0d5cdc0
commit ffc24b9d14
2 changed files with 63 additions and 63 deletions

View File

@ -1,11 +1,13 @@
package eu.kanade.presentation.library package eu.kanade.presentation.library
import androidx.compose.animation.Crossfade
import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import eu.kanade.domain.category.model.Category import eu.kanade.domain.category.model.Category
import eu.kanade.presentation.components.LibraryBottomActionMenu import eu.kanade.presentation.components.LibraryBottomActionMenu
import eu.kanade.presentation.components.LoadingScreen
import eu.kanade.presentation.components.Scaffold import eu.kanade.presentation.components.Scaffold
import eu.kanade.presentation.library.components.LibraryContent import eu.kanade.presentation.library.components.LibraryContent
import eu.kanade.presentation.library.components.LibraryToolbar import eu.kanade.presentation.library.components.LibraryToolbar
@ -36,60 +38,65 @@ fun LibraryScreen(
onOpenReader: (LibraryManga) -> Unit, onOpenReader: (LibraryManga) -> Unit,
// SY <-- // SY <--
) { ) {
Scaffold( Crossfade(targetState = presenter.isLoading) { state ->
modifier = Modifier.safeDrawingPadding(), when (state) {
topBar = { true -> LoadingScreen()
val title by presenter.getToolbarTitle() false -> Scaffold(
LibraryToolbar( modifier = Modifier.safeDrawingPadding(),
state = presenter, topBar = {
title = title, val title by presenter.getToolbarTitle()
onClickUnselectAll = onClickUnselectAll, LibraryToolbar(
onClickSelectAll = onClickSelectAll, state = presenter,
onClickInvertSelection = onClickInvertSelection, title = title,
onClickFilter = onClickFilter, onClickUnselectAll = onClickUnselectAll,
onClickRefresh = { onClickRefresh(null) }, onClickSelectAll = onClickSelectAll,
// SY --> onClickInvertSelection = onClickInvertSelection,
onClickSyncExh = onClickSyncExh, onClickFilter = onClickFilter,
// SY <-- onClickRefresh = { onClickRefresh(null) },
) // SY -->
}, onClickSyncExh = onClickSyncExh,
bottomBar = { // SY <--
LibraryBottomActionMenu( )
visible = presenter.selectionMode, },
onChangeCategoryClicked = onChangeCategoryClicked, bottomBar = {
onMarkAsReadClicked = onMarkAsReadClicked, LibraryBottomActionMenu(
onMarkAsUnreadClicked = onMarkAsUnreadClicked, visible = presenter.selectionMode,
onDownloadClicked = onDownloadClicked, onChangeCategoryClicked = onChangeCategoryClicked,
onDeleteClicked = onDeleteClicked.takeIf { presenter.selection.none { it.source == LocalSource.ID } }, onMarkAsReadClicked = onMarkAsReadClicked,
// SY --> onMarkAsUnreadClicked = onMarkAsUnreadClicked,
onClickCleanTitles = onClickCleanTitles.takeIf { presenter.showCleanTitles }, onDownloadClicked = onDownloadClicked,
onClickMigrate = onClickMigrate, onDeleteClicked = onDeleteClicked.takeIf { presenter.selection.none { it.source == LocalSource.ID } },
onClickAddToMangaDex = onClickAddToMangaDex.takeIf { presenter.showAddToMangadex }, // SY -->
// SY <-- onClickCleanTitles = onClickCleanTitles.takeIf { presenter.showCleanTitles },
) onClickMigrate = onClickMigrate,
}, onClickAddToMangaDex = onClickAddToMangaDex.takeIf { presenter.showAddToMangadex },
) { paddingValues -> // SY <--
LibraryContent( )
state = presenter, },
contentPadding = paddingValues, ) { paddingValues ->
currentPage = presenter.activeCategory, LibraryContent(
isLibraryEmpty = presenter.loadedManga.isEmpty(), state = presenter,
showPageTabs = presenter.tabVisibility, contentPadding = paddingValues,
showMangaCount = presenter.mangaCountVisibility, currentPage = presenter.activeCategory,
onChangeCurrentPage = { presenter.activeCategory = it }, isLibraryEmpty = presenter.loadedManga.isEmpty(),
onMangaClicked = onMangaClicked, showPageTabs = presenter.tabVisibility,
onToggleSelection = { presenter.toggleSelection(it) }, showMangaCount = presenter.mangaCountVisibility,
onRefresh = onClickRefresh, onChangeCurrentPage = { presenter.activeCategory = it },
onGlobalSearchClicked = onGlobalSearchClicked, onMangaClicked = onMangaClicked,
getNumberOfMangaForCategory = { presenter.getMangaCountForCategory(it) }, onToggleSelection = { presenter.toggleSelection(it) },
getDisplayModeForPage = { presenter.getDisplayMode(index = it) }, onRefresh = onClickRefresh,
getColumnsForOrientation = { presenter.getColumnsPreferenceForCurrentOrientation(it) }, onGlobalSearchClicked = onGlobalSearchClicked,
getLibraryForPage = { presenter.getMangaForCategory(page = it) }, getNumberOfMangaForCategory = { presenter.getMangaCountForCategory(it) },
isIncognitoMode = presenter.isIncognitoMode, getDisplayModeForPage = { presenter.getDisplayMode(index = it) },
isDownloadOnly = presenter.isDownloadOnly, getColumnsForOrientation = { presenter.getColumnsPreferenceForCurrentOrientation(it) },
// SY --> getLibraryForPage = { presenter.getMangaForCategory(page = it) },
onOpenReader = onOpenReader, isIncognitoMode = presenter.isIncognitoMode,
// SY <-- isDownloadOnly = presenter.isDownloadOnly,
) // SY -->
onOpenReader = onOpenReader,
// SY <--
)
}
}
} }
} }

View File

@ -14,7 +14,6 @@ import com.google.accompanist.swiperefresh.rememberSwipeRefreshState
import eu.kanade.core.prefs.PreferenceMutableState import eu.kanade.core.prefs.PreferenceMutableState
import eu.kanade.domain.category.model.Category import eu.kanade.domain.category.model.Category
import eu.kanade.presentation.components.EmptyScreen import eu.kanade.presentation.components.EmptyScreen
import eu.kanade.presentation.components.LoadingScreen
import eu.kanade.presentation.components.SwipeRefreshIndicator import eu.kanade.presentation.components.SwipeRefreshIndicator
import eu.kanade.presentation.library.LibraryState import eu.kanade.presentation.library.LibraryState
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
@ -47,21 +46,15 @@ fun LibraryContent(
// SY <-- // SY <--
) { ) {
val categories = state.categories val categories = state.categories
val pagerState = rememberPagerState(currentPage.coerceAtMost(categories.lastIndex)) val pagerState = rememberPagerState(currentPage.coerceAtMost(categories.lastIndex))
if (categories.isEmpty()) {
LoadingScreen()
return
}
Column( Column(
modifier = Modifier.padding(contentPadding), modifier = Modifier.padding(contentPadding),
) { ) {
if (showPageTabs && categories.size > 1) { if (showPageTabs && categories.size > 1) {
LibraryTabs( LibraryTabs(
state = pagerState, state = pagerState,
categories = state.categories, categories = categories,
showMangaCount = showMangaCount, showMangaCount = showMangaCount,
getNumberOfMangaForCategory = getNumberOfMangaForCategory, getNumberOfMangaForCategory = getNumberOfMangaForCategory,
isDownloadOnly = isDownloadOnly, isDownloadOnly = isDownloadOnly,