* 重构空书架状态处理机制,提高分页器索引的安全性
This commit is contained in:
1 file changed
+14
-56
@@ -210,60 +210,6 @@ fun BookshelfScreen(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (uiState.groups.isEmpty()) {
|
|
||||||
val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior()
|
|
||||||
val onSearchClick = {
|
|
||||||
if (BookshelfConfig.bookshelfSearchActionDirectToSearchState.value) {
|
|
||||||
onNavigateToSearch(uiState.searchKey.trim())
|
|
||||||
} else {
|
|
||||||
viewModel.setSearchMode(!uiState.isSearch)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
AppScaffold(
|
|
||||||
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
|
|
||||||
contentWindowInsets = WindowInsets(0),
|
|
||||||
snackbarHost = {
|
|
||||||
SnackbarHost(
|
|
||||||
hostState = snackbarHostState,
|
|
||||||
modifier = Modifier
|
|
||||||
.padding(
|
|
||||||
|
|
||||||
bottom = 72.dp + WindowInsets.navigationBars
|
|
||||||
.asPaddingValues()
|
|
||||||
.calculateBottomPadding()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
topBar = {
|
|
||||||
BookshelfTopBar(
|
|
||||||
uiState = uiState,
|
|
||||||
scrollBehavior = scrollBehavior,
|
|
||||||
onSearchClick = onSearchClick,
|
|
||||||
onSearchQueryChange = { viewModel.setSearchKey(it) },
|
|
||||||
onSearchSubmit = { rawQuery ->
|
|
||||||
rawQuery.trim()
|
|
||||||
.takeIf { it.isNotEmpty() }
|
|
||||||
?.let(onNavigateToSearch)
|
|
||||||
},
|
|
||||||
onClearSearch = { viewModel.setSearchKey("") }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
) { paddingValues ->
|
|
||||||
if (!uiState.isInitialLoading) {
|
|
||||||
EmptyMessage(
|
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxSize()
|
|
||||||
.padding(
|
|
||||||
top = paddingValues.calculateTopPadding(),
|
|
||||||
bottom = 120.dp
|
|
||||||
),
|
|
||||||
messageResId = R.string.bookshelf_empty
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val activeOverlay = uiState.activeOverlay
|
val activeOverlay = uiState.activeOverlay
|
||||||
val showGroupMenu = activeOverlay == BookshelfOverlay.GroupMenu
|
val showGroupMenu = activeOverlay == BookshelfOverlay.GroupMenu
|
||||||
val isEditMode = uiState.isEditMode
|
val isEditMode = uiState.isEditMode
|
||||||
@@ -280,7 +226,7 @@ fun BookshelfScreen(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val pagerState = rememberPagerState(
|
val pagerState = rememberPagerState(
|
||||||
initialPage = uiState.selectedGroupIndex,
|
initialPage = uiState.selectedGroupIndex.coerceAtLeast(0),
|
||||||
pageCount = { uiState.groups.size }
|
pageCount = { uiState.groups.size }
|
||||||
)
|
)
|
||||||
val latestGroups by rememberUpdatedState(uiState.groups)
|
val latestGroups by rememberUpdatedState(uiState.groups)
|
||||||
@@ -765,7 +711,19 @@ fun BookshelfScreen(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
) { isRoot ->
|
) { isRoot ->
|
||||||
if (bookGroupStyle == 2 && isRoot && !isUsingStandaloneSearchGroup) {
|
if (uiState.groups.isEmpty() && !uiState.isSearch) {
|
||||||
|
if (!uiState.isInitialLoading) {
|
||||||
|
EmptyMessage(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.padding(
|
||||||
|
top = paddingValues.calculateTopPadding(),
|
||||||
|
bottom = 120.dp
|
||||||
|
),
|
||||||
|
messageResId = R.string.bookshelf_empty
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else if (bookGroupStyle == 2 && isRoot && !isUsingStandaloneSearchGroup) {
|
||||||
val folderColumns =
|
val folderColumns =
|
||||||
if (bookshelfFolderLayoutMode == 0) bookshelfFolderLayoutList else bookshelfFolderLayoutGrid
|
if (bookshelfFolderLayoutMode == 0) bookshelfFolderLayoutList else bookshelfFolderLayoutGrid
|
||||||
val isGridMode = bookshelfFolderLayoutMode != 0
|
val isGridMode = bookshelfFolderLayoutMode != 0
|
||||||
|
|||||||
Reference in new issue
Block a user