This commit is contained in:
HapeLee committed 2026-05-23 15:39:49 +08:00
1 parent be2041c7da
commit d2853244be
2 files changed
+32 -52

No files matched your search

+4 -2
View File
@@ -40,8 +40,9 @@ jobs:
latest_tag: ${{ steps.set-ver.outputs.last_tag }} latest_tag: ${{ steps.set-ver.outputs.last_tag }}
is_release: ${{ steps.set-ver.outputs.is_release }} is_release: ${{ steps.set-ver.outputs.is_release }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
with: with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0 fetch-depth: 0
- name: 计算版本号和构建号 - name: 计算版本号和构建号
@@ -248,8 +249,9 @@ jobs:
success() success()
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
with: with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0 fetch-depth: 0
# 1. 下载 build 任务上传的所有 APK # 1. 下载 build 任务上传的所有 APK
@@ -104,30 +104,20 @@ fun HomepageScreen(
uiState.manageState.sets.filter { it.isSelected } uiState.manageState.sets.filter { it.isSelected }
} }
val pagerState = rememberPagerState(pageCount = { val pagerState = rememberPagerState(pageCount = {
if (layoutMode == 1) selectedSets.size.coerceAtLeast(1) else 1 selectedSets.size.coerceAtLeast(1)
}) })
val mixedGridState = rememberLazyStaggeredGridState()
val homeString = stringResource(R.string.home) val homeString = stringResource(R.string.home)
val currentTitle by remember( val currentTitle by remember(
layoutMode, layoutMode,
pagerState.currentPage, pagerState.currentPage,
selectedSets, selectedSets,
uiState.modules
) { ) {
derivedStateOf { derivedStateOf {
if (layoutMode == 1) { if (layoutMode == 1) {
homeString homeString
} else { } else {
val firstHeader = mixedGridState.layoutInfo.visibleItemsInfo.firstOrNull { selectedSets.getOrNull(pagerState.currentPage)?.sourceName ?: homeString
(it.key as? String)?.startsWith("header_") == true
}
if (firstHeader != null) {
val id = (firstHeader.key as? String).orEmpty().substringAfter("header_", "")
uiState.modules.find { it.globalId == id }?.setName ?: homeString
} else {
homeString
}
} }
} }
} }
@@ -199,48 +189,36 @@ fun HomepageScreen(
.fillMaxSize() .fillMaxSize()
.padding(paddingValues), .padding(paddingValues),
) { ) {
if (layoutMode == 0) { if (selectedSets.isEmpty()) {
ModuleList( Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
modules = uiState.modules, AppText(stringResource(R.string.homepage_no_source_sets_selected))
viewModel = viewModel, }
gridState = mixedGridState,
modifier = Modifier.fillMaxSize(),
onErrorClick = { errorMsg = it },
sharedTransitionScope = sharedTransitionScope,
animatedVisibilityScope = animatedVisibilityScope,
)
} else { } else {
if (selectedSets.isEmpty()) { HorizontalPager(
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { state = pagerState,
AppText(stringResource(R.string.homepage_no_source_sets_selected)) modifier = Modifier.fillMaxSize(),
} key = { index -> selectedSets.getOrNull(index)?.sourceUrl ?: index }
} else { ) { pageIndex ->
HorizontalPager( val source = selectedSets.getOrNull(pageIndex)
state = pagerState, val sourceModules = remember(uiState.modules, source) {
modifier = Modifier.fillMaxSize(), uiState.modules.filter { module ->
key = { index -> selectedSets.getOrNull(index)?.sourceUrl ?: index } if (source?.isCustomSet == true) {
) { pageIndex -> val setId =
val source = selectedSets.getOrNull(pageIndex) HomepageViewModel.customSetIdFromUrl(source.sourceUrl)
val sourceModules = remember(uiState.modules, source) { module.customSetId == setId
uiState.modules.filter { module -> } else {
if (source?.isCustomSet == true) { module.sourceUrl == source?.sourceUrl
val setId =
HomepageViewModel.customSetIdFromUrl(source.sourceUrl)
module.customSetId == setId
} else {
module.sourceUrl == source?.sourceUrl
}
} }
} }
ModuleList(
modules = sourceModules,
viewModel = viewModel,
modifier = Modifier.fillMaxSize(),
onErrorClick = { errorMsg = it },
sharedTransitionScope = sharedTransitionScope,
animatedVisibilityScope = animatedVisibilityScope,
)
} }
ModuleList(
modules = sourceModules,
viewModel = viewModel,
modifier = Modifier.fillMaxSize(),
onErrorClick = { errorMsg = it },
sharedTransitionScope = sharedTransitionScope,
animatedVisibilityScope = animatedVisibilityScope,
)
} }
} }
} }