mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Show LibraryScreen toolbar early to match other main screens (#8285)
This commit is contained in:
		@@ -1,6 +1,5 @@
 | 
			
		||||
package eu.kanade.presentation.library
 | 
			
		||||
 | 
			
		||||
import androidx.compose.animation.Crossfade
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.filled.HelpOutline
 | 
			
		||||
@@ -38,79 +37,79 @@ fun LibraryScreen(
 | 
			
		||||
    onClickFilter: () -> Unit,
 | 
			
		||||
    onClickRefresh: (Category?) -> Boolean,
 | 
			
		||||
) {
 | 
			
		||||
    Crossfade(targetState = presenter.isLoading) { state ->
 | 
			
		||||
        when (state) {
 | 
			
		||||
            true -> LoadingScreen()
 | 
			
		||||
            false -> Scaffold(
 | 
			
		||||
                topBar = { scrollBehavior ->
 | 
			
		||||
                    val title by presenter.getToolbarTitle()
 | 
			
		||||
                    val tabVisible = presenter.tabVisibility && presenter.categories.size > 1
 | 
			
		||||
                    LibraryToolbar(
 | 
			
		||||
                        state = presenter,
 | 
			
		||||
                        title = title,
 | 
			
		||||
                        incognitoMode = !tabVisible && presenter.isIncognitoMode,
 | 
			
		||||
                        downloadedOnlyMode = !tabVisible && presenter.isDownloadOnly,
 | 
			
		||||
                        onClickUnselectAll = onClickUnselectAll,
 | 
			
		||||
                        onClickSelectAll = onClickSelectAll,
 | 
			
		||||
                        onClickInvertSelection = onClickInvertSelection,
 | 
			
		||||
                        onClickFilter = onClickFilter,
 | 
			
		||||
                        onClickRefresh = { onClickRefresh(null) },
 | 
			
		||||
                        scrollBehavior = scrollBehavior.takeIf { !tabVisible }, // For scroll overlay when no tab
 | 
			
		||||
                    )
 | 
			
		||||
                },
 | 
			
		||||
                bottomBar = {
 | 
			
		||||
                    LibraryBottomActionMenu(
 | 
			
		||||
                        visible = presenter.selectionMode,
 | 
			
		||||
                        onChangeCategoryClicked = onChangeCategoryClicked,
 | 
			
		||||
                        onMarkAsReadClicked = onMarkAsReadClicked,
 | 
			
		||||
                        onMarkAsUnreadClicked = onMarkAsUnreadClicked,
 | 
			
		||||
                        onDownloadClicked = onDownloadClicked.takeIf { presenter.selection.none { it.manga.isLocal() } },
 | 
			
		||||
                        onDeleteClicked = onDeleteClicked,
 | 
			
		||||
                    )
 | 
			
		||||
                },
 | 
			
		||||
            ) { paddingValues ->
 | 
			
		||||
                val contentPadding = TachiyomiBottomNavigationView.withBottomNavPadding(paddingValues)
 | 
			
		||||
                if (presenter.searchQuery.isNullOrEmpty() && presenter.isLibraryEmpty) {
 | 
			
		||||
                    val handler = LocalUriHandler.current
 | 
			
		||||
                    EmptyScreen(
 | 
			
		||||
                        textResource = R.string.information_empty_library,
 | 
			
		||||
                        modifier = Modifier.padding(contentPadding),
 | 
			
		||||
                        actions = listOf(
 | 
			
		||||
                            EmptyScreenAction(
 | 
			
		||||
                                stringResId = R.string.getting_started_guide,
 | 
			
		||||
                                icon = Icons.Default.HelpOutline,
 | 
			
		||||
                                onClick = { handler.openUri("https://tachiyomi.org/help/guides/getting-started") },
 | 
			
		||||
                            ),
 | 
			
		||||
                        ),
 | 
			
		||||
                    )
 | 
			
		||||
                    return@Scaffold
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                LibraryContent(
 | 
			
		||||
                    state = presenter,
 | 
			
		||||
                    contentPadding = contentPadding,
 | 
			
		||||
                    currentPage = { presenter.activeCategory },
 | 
			
		||||
                    isLibraryEmpty = presenter.isLibraryEmpty,
 | 
			
		||||
                    showPageTabs = presenter.tabVisibility,
 | 
			
		||||
                    showMangaCount = presenter.mangaCountVisibility,
 | 
			
		||||
                    onChangeCurrentPage = { presenter.activeCategory = it },
 | 
			
		||||
                    onMangaClicked = onMangaClicked,
 | 
			
		||||
                    onToggleSelection = { presenter.toggleSelection(it) },
 | 
			
		||||
                    onToggleRangeSelection = { presenter.toggleRangeSelection(it) },
 | 
			
		||||
                    onRefresh = onClickRefresh,
 | 
			
		||||
                    onGlobalSearchClicked = onGlobalSearchClicked,
 | 
			
		||||
                    getNumberOfMangaForCategory = { presenter.getMangaCountForCategory(it) },
 | 
			
		||||
                    getDisplayModeForPage = { presenter.categories[it].display },
 | 
			
		||||
                    getColumnsForOrientation = { presenter.getColumnsPreferenceForCurrentOrientation(it) },
 | 
			
		||||
                    getLibraryForPage = { presenter.getMangaForCategory(page = it) },
 | 
			
		||||
                    showDownloadBadges = presenter.showDownloadBadges,
 | 
			
		||||
                    showUnreadBadges = presenter.showUnreadBadges,
 | 
			
		||||
                    showLocalBadges = presenter.showLocalBadges,
 | 
			
		||||
                    showLanguageBadges = presenter.showLanguageBadges,
 | 
			
		||||
                    isIncognitoMode = presenter.isIncognitoMode,
 | 
			
		||||
                    isDownloadOnly = presenter.isDownloadOnly,
 | 
			
		||||
                )
 | 
			
		||||
            }
 | 
			
		||||
    Scaffold(
 | 
			
		||||
        topBar = { scrollBehavior ->
 | 
			
		||||
            val title by presenter.getToolbarTitle()
 | 
			
		||||
            val tabVisible = presenter.tabVisibility && presenter.categories.size > 1
 | 
			
		||||
            LibraryToolbar(
 | 
			
		||||
                state = presenter,
 | 
			
		||||
                title = title,
 | 
			
		||||
                incognitoMode = !tabVisible && presenter.isIncognitoMode,
 | 
			
		||||
                downloadedOnlyMode = !tabVisible && presenter.isDownloadOnly,
 | 
			
		||||
                onClickUnselectAll = onClickUnselectAll,
 | 
			
		||||
                onClickSelectAll = onClickSelectAll,
 | 
			
		||||
                onClickInvertSelection = onClickInvertSelection,
 | 
			
		||||
                onClickFilter = onClickFilter,
 | 
			
		||||
                onClickRefresh = { onClickRefresh(null) },
 | 
			
		||||
                scrollBehavior = scrollBehavior.takeIf { !tabVisible }, // For scroll overlay when no tab
 | 
			
		||||
            )
 | 
			
		||||
        },
 | 
			
		||||
        bottomBar = {
 | 
			
		||||
            LibraryBottomActionMenu(
 | 
			
		||||
                visible = presenter.selectionMode,
 | 
			
		||||
                onChangeCategoryClicked = onChangeCategoryClicked,
 | 
			
		||||
                onMarkAsReadClicked = onMarkAsReadClicked,
 | 
			
		||||
                onMarkAsUnreadClicked = onMarkAsUnreadClicked,
 | 
			
		||||
                onDownloadClicked = onDownloadClicked.takeIf { presenter.selection.none { it.manga.isLocal() } },
 | 
			
		||||
                onDeleteClicked = onDeleteClicked,
 | 
			
		||||
            )
 | 
			
		||||
        },
 | 
			
		||||
    ) { paddingValues ->
 | 
			
		||||
        if (presenter.isLoading) {
 | 
			
		||||
            LoadingScreen()
 | 
			
		||||
            return@Scaffold
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val contentPadding = TachiyomiBottomNavigationView.withBottomNavPadding(paddingValues)
 | 
			
		||||
        if (presenter.searchQuery.isNullOrEmpty() && presenter.isLibraryEmpty) {
 | 
			
		||||
            val handler = LocalUriHandler.current
 | 
			
		||||
            EmptyScreen(
 | 
			
		||||
                textResource = R.string.information_empty_library,
 | 
			
		||||
                modifier = Modifier.padding(contentPadding),
 | 
			
		||||
                actions = listOf(
 | 
			
		||||
                    EmptyScreenAction(
 | 
			
		||||
                        stringResId = R.string.getting_started_guide,
 | 
			
		||||
                        icon = Icons.Default.HelpOutline,
 | 
			
		||||
                        onClick = { handler.openUri("https://tachiyomi.org/help/guides/getting-started") },
 | 
			
		||||
                    ),
 | 
			
		||||
                ),
 | 
			
		||||
            )
 | 
			
		||||
            return@Scaffold
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        LibraryContent(
 | 
			
		||||
            state = presenter,
 | 
			
		||||
            contentPadding = contentPadding,
 | 
			
		||||
            currentPage = { presenter.activeCategory },
 | 
			
		||||
            isLibraryEmpty = presenter.isLibraryEmpty,
 | 
			
		||||
            showPageTabs = presenter.tabVisibility,
 | 
			
		||||
            showMangaCount = presenter.mangaCountVisibility,
 | 
			
		||||
            onChangeCurrentPage = { presenter.activeCategory = it },
 | 
			
		||||
            onMangaClicked = onMangaClicked,
 | 
			
		||||
            onToggleSelection = { presenter.toggleSelection(it) },
 | 
			
		||||
            onToggleRangeSelection = { presenter.toggleRangeSelection(it) },
 | 
			
		||||
            onRefresh = onClickRefresh,
 | 
			
		||||
            onGlobalSearchClicked = onGlobalSearchClicked,
 | 
			
		||||
            getNumberOfMangaForCategory = { presenter.getMangaCountForCategory(it) },
 | 
			
		||||
            getDisplayModeForPage = { presenter.categories[it].display },
 | 
			
		||||
            getColumnsForOrientation = { presenter.getColumnsPreferenceForCurrentOrientation(it) },
 | 
			
		||||
            getLibraryForPage = { presenter.getMangaForCategory(page = it) },
 | 
			
		||||
            showDownloadBadges = presenter.showDownloadBadges,
 | 
			
		||||
            showUnreadBadges = presenter.showUnreadBadges,
 | 
			
		||||
            showLocalBadges = presenter.showLocalBadges,
 | 
			
		||||
            showLanguageBadges = presenter.showLanguageBadges,
 | 
			
		||||
            isIncognitoMode = presenter.isIncognitoMode,
 | 
			
		||||
            isDownloadOnly = presenter.isDownloadOnly,
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user