diff --git a/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt index 433e696b2..81452db1b 100644 --- a/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt @@ -1,11 +1,13 @@ package eu.kanade.presentation.library +import androidx.compose.animation.Crossfade import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import eu.kanade.domain.category.model.Category import eu.kanade.presentation.components.LibraryBottomActionMenu +import eu.kanade.presentation.components.LoadingScreen import eu.kanade.presentation.components.Scaffold import eu.kanade.presentation.library.components.LibraryContent import eu.kanade.presentation.library.components.LibraryToolbar @@ -36,60 +38,65 @@ fun LibraryScreen( onOpenReader: (LibraryManga) -> Unit, // SY <-- ) { - Scaffold( - modifier = Modifier.safeDrawingPadding(), - topBar = { - val title by presenter.getToolbarTitle() - LibraryToolbar( - state = presenter, - title = title, - onClickUnselectAll = onClickUnselectAll, - onClickSelectAll = onClickSelectAll, - onClickInvertSelection = onClickInvertSelection, - onClickFilter = onClickFilter, - onClickRefresh = { onClickRefresh(null) }, - // SY --> - onClickSyncExh = onClickSyncExh, - // SY <-- - ) - }, - bottomBar = { - LibraryBottomActionMenu( - visible = presenter.selectionMode, - onChangeCategoryClicked = onChangeCategoryClicked, - onMarkAsReadClicked = onMarkAsReadClicked, - onMarkAsUnreadClicked = onMarkAsUnreadClicked, - onDownloadClicked = onDownloadClicked, - onDeleteClicked = onDeleteClicked.takeIf { presenter.selection.none { it.source == LocalSource.ID } }, - // SY --> - onClickCleanTitles = onClickCleanTitles.takeIf { presenter.showCleanTitles }, - onClickMigrate = onClickMigrate, - onClickAddToMangaDex = onClickAddToMangaDex.takeIf { presenter.showAddToMangadex }, - // SY <-- - ) - }, - ) { paddingValues -> - LibraryContent( - state = presenter, - contentPadding = paddingValues, - currentPage = presenter.activeCategory, - isLibraryEmpty = presenter.loadedManga.isEmpty(), - showPageTabs = presenter.tabVisibility, - showMangaCount = presenter.mangaCountVisibility, - onChangeCurrentPage = { presenter.activeCategory = it }, - onMangaClicked = onMangaClicked, - onToggleSelection = { presenter.toggleSelection(it) }, - onRefresh = onClickRefresh, - onGlobalSearchClicked = onGlobalSearchClicked, - getNumberOfMangaForCategory = { presenter.getMangaCountForCategory(it) }, - getDisplayModeForPage = { presenter.getDisplayMode(index = it) }, - getColumnsForOrientation = { presenter.getColumnsPreferenceForCurrentOrientation(it) }, - getLibraryForPage = { presenter.getMangaForCategory(page = it) }, - isIncognitoMode = presenter.isIncognitoMode, - isDownloadOnly = presenter.isDownloadOnly, - // SY --> - onOpenReader = onOpenReader, - // SY <-- - ) + Crossfade(targetState = presenter.isLoading) { state -> + when (state) { + true -> LoadingScreen() + false -> Scaffold( + modifier = Modifier.safeDrawingPadding(), + topBar = { + val title by presenter.getToolbarTitle() + LibraryToolbar( + state = presenter, + title = title, + onClickUnselectAll = onClickUnselectAll, + onClickSelectAll = onClickSelectAll, + onClickInvertSelection = onClickInvertSelection, + onClickFilter = onClickFilter, + onClickRefresh = { onClickRefresh(null) }, + // SY --> + onClickSyncExh = onClickSyncExh, + // SY <-- + ) + }, + bottomBar = { + LibraryBottomActionMenu( + visible = presenter.selectionMode, + onChangeCategoryClicked = onChangeCategoryClicked, + onMarkAsReadClicked = onMarkAsReadClicked, + onMarkAsUnreadClicked = onMarkAsUnreadClicked, + onDownloadClicked = onDownloadClicked, + onDeleteClicked = onDeleteClicked.takeIf { presenter.selection.none { it.source == LocalSource.ID } }, + // SY --> + onClickCleanTitles = onClickCleanTitles.takeIf { presenter.showCleanTitles }, + onClickMigrate = onClickMigrate, + onClickAddToMangaDex = onClickAddToMangaDex.takeIf { presenter.showAddToMangadex }, + // SY <-- + ) + }, + ) { paddingValues -> + LibraryContent( + state = presenter, + contentPadding = paddingValues, + currentPage = presenter.activeCategory, + isLibraryEmpty = presenter.loadedManga.isEmpty(), + showPageTabs = presenter.tabVisibility, + showMangaCount = presenter.mangaCountVisibility, + onChangeCurrentPage = { presenter.activeCategory = it }, + onMangaClicked = onMangaClicked, + onToggleSelection = { presenter.toggleSelection(it) }, + onRefresh = onClickRefresh, + onGlobalSearchClicked = onGlobalSearchClicked, + getNumberOfMangaForCategory = { presenter.getMangaCountForCategory(it) }, + getDisplayModeForPage = { presenter.getDisplayMode(index = it) }, + getColumnsForOrientation = { presenter.getColumnsPreferenceForCurrentOrientation(it) }, + getLibraryForPage = { presenter.getMangaForCategory(page = it) }, + isIncognitoMode = presenter.isIncognitoMode, + isDownloadOnly = presenter.isDownloadOnly, + // SY --> + onOpenReader = onOpenReader, + // SY <-- + ) + } + } } } 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 ad97fb50f..a5efc3262 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 @@ -14,7 +14,6 @@ import com.google.accompanist.swiperefresh.rememberSwipeRefreshState import eu.kanade.core.prefs.PreferenceMutableState import eu.kanade.domain.category.model.Category import eu.kanade.presentation.components.EmptyScreen -import eu.kanade.presentation.components.LoadingScreen import eu.kanade.presentation.components.SwipeRefreshIndicator import eu.kanade.presentation.library.LibraryState import eu.kanade.tachiyomi.R @@ -47,21 +46,15 @@ fun LibraryContent( // SY <-- ) { val categories = state.categories - val pagerState = rememberPagerState(currentPage.coerceAtMost(categories.lastIndex)) - if (categories.isEmpty()) { - LoadingScreen() - return - } - Column( modifier = Modifier.padding(contentPadding), ) { if (showPageTabs && categories.size > 1) { LibraryTabs( state = pagerState, - categories = state.categories, + categories = categories, showMangaCount = showMangaCount, getNumberOfMangaForCategory = getNumberOfMangaForCategory, isDownloadOnly = isDownloadOnly,