|
@@ -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
|
|
@@ -28,49 +30,54 @@ fun LibraryScreen(
|
|
|
onClickFilter: () -> Unit,
|
|
|
onClickRefresh: (Category?) -> Unit,
|
|
|
) {
|
|
|
- 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) },
|
|
|
- )
|
|
|
- },
|
|
|
- bottomBar = {
|
|
|
- LibraryBottomActionMenu(
|
|
|
- visible = presenter.selectionMode,
|
|
|
- onChangeCategoryClicked = onChangeCategoryClicked,
|
|
|
- onMarkAsReadClicked = onMarkAsReadClicked,
|
|
|
- onMarkAsUnreadClicked = onMarkAsUnreadClicked,
|
|
|
- onDownloadClicked = onDownloadClicked,
|
|
|
- onDeleteClicked = onDeleteClicked.takeIf { presenter.selection.none { it.source == LocalSource.ID } },
|
|
|
- )
|
|
|
- },
|
|
|
- ) { 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,
|
|
|
- )
|
|
|
+ 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) },
|
|
|
+ )
|
|
|
+ },
|
|
|
+ bottomBar = {
|
|
|
+ LibraryBottomActionMenu(
|
|
|
+ visible = presenter.selectionMode,
|
|
|
+ onChangeCategoryClicked = onChangeCategoryClicked,
|
|
|
+ onMarkAsReadClicked = onMarkAsReadClicked,
|
|
|
+ onMarkAsUnreadClicked = onMarkAsUnreadClicked,
|
|
|
+ onDownloadClicked = onDownloadClicked,
|
|
|
+ onDeleteClicked = onDeleteClicked.takeIf { presenter.selection.none { it.source == LocalSource.ID } },
|
|
|
+ )
|
|
|
+ },
|
|
|
+ ) { 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,
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|