fix: 楼中楼无法加载更多

This commit is contained in:
HuanCheng65 2023-07-22 08:18:28 +08:00
parent b2edec39eb
commit 23009f1da3
No known key found for this signature in database
GPG Key ID: 5EC9DD60A32C7360
2 changed files with 20 additions and 6 deletions

View File

@ -173,9 +173,13 @@ internal fun SubPostsContent(
prop1 = SubPostsUiState::currentPage,
initial = 1
)
val totalCount by viewModel.uiState.collectPartialAsState(
prop1 = SubPostsUiState::totalCount,
initial = 0
)
val hasMore by viewModel.uiState.collectPartialAsState(
prop1 = SubPostsUiState::hasMore,
initial = false
initial = true
)
val lazyListState = rememberLazyListState()
@ -330,7 +334,7 @@ internal fun SubPostsContent(
Text(
text = stringResource(
id = R.string.title_sub_posts_header,
subPosts.size
totalCount
),
style = MaterialTheme.typography.subtitle1
)

View File

@ -74,9 +74,10 @@ class SubPostsViewModel @Inject constructor() :
post.contentRenders,
subPosts.wrapImmutable(),
subPosts.map { it.content.renders }.toImmutableList(),
page.has_more == 1,
page.current_page < page.total_page,
page.current_page,
page.total_page
page.total_page,
page.total_count
)
}
.onStart { emit(SubPostsPartialChange.Load.Start) }
@ -92,8 +93,10 @@ class SubPostsViewModel @Inject constructor() :
SubPostsPartialChange.LoadMore.Success(
subPosts.wrapImmutable(),
subPosts.map { it.content.renders }.toImmutableList(),
page.has_more == 1,
page.current_page
page.current_page < page.total_page,
page.current_page,
page.total_page,
page.total_count,
)
}
.onStart { emit(SubPostsPartialChange.LoadMore.Start) }
@ -155,6 +158,7 @@ sealed interface SubPostsPartialChange : PartialChange<SubPostsUiState> {
hasMore = hasMore,
currentPage = currentPage,
totalPage = totalPage,
totalCount = totalCount,
forum = forum,
post = post,
postContentRenders = postContentRenders,
@ -177,6 +181,7 @@ sealed interface SubPostsPartialChange : PartialChange<SubPostsUiState> {
val hasMore: Boolean,
val currentPage: Int,
val totalPage: Int,
val totalCount: Int,
) : Load()
data class Failure(val throwable: Throwable) : Load()
@ -193,6 +198,8 @@ sealed interface SubPostsPartialChange : PartialChange<SubPostsUiState> {
isLoading = false,
hasMore = hasMore,
currentPage = currentPage,
totalPage = totalPage,
totalCount = totalCount,
subPosts = (oldState.subPosts + subPosts).toImmutableList(),
subPostsContentRenders = (oldState.subPostsContentRenders + subPostsContentRenders).toImmutableList(),
)
@ -208,6 +215,8 @@ sealed interface SubPostsPartialChange : PartialChange<SubPostsUiState> {
val subPostsContentRenders: ImmutableList<ImmutableList<PbContentRender>>,
val hasMore: Boolean,
val currentPage: Int,
val totalPage: Int,
val totalCount: Int,
) : LoadMore()
data class Failure(val throwable: Throwable) : LoadMore()
@ -287,6 +296,7 @@ data class SubPostsUiState(
val hasMore: Boolean = true,
val currentPage: Int = 1,
val totalPage: Int = 1,
val totalCount: Int = 0,
val forum: ImmutableHolder<SimpleForum>? = null,
val post: ImmutableHolder<Post>? = null,