Refactor: 优化个人主页和账户主页帖子加载逻辑
- 统一MyProfileViewModel和AccountProfileViewModel中的帖子加载逻辑,使用一致的pageSize。 - 在ProfileWrap和AccountProfileV2中传递正确的postCount。 - 在ProfileV3中改进了加载更多帖子的触发条件,确保在有更多数据时才触发加载。 - 修复了注册页面勾选协议和促销选项后,错误状态未清除的问题。 - 为DataLoader和ProfileV3中的滚动加载逻辑添加了详细日志,方便调试。
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.aiosman.ravenow.entity
|
||||
|
||||
import android.util.Log
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
@@ -22,30 +23,38 @@ abstract class DataLoader<T,ET> {
|
||||
suspend fun loadData(
|
||||
extra: ET
|
||||
) {
|
||||
Log.d("DataLoader", "loadData开始 - firstLoad: $firstLoad")
|
||||
if (!firstLoad) {
|
||||
Log.d("DataLoader", "loadData跳过 - 非首次加载")
|
||||
return
|
||||
}
|
||||
firstLoad = false
|
||||
Log.d("DataLoader", "调用fetchData - page: $page, pageSize: $pageSize")
|
||||
val result = fetchData(page, pageSize, extra)
|
||||
list = result.list.toMutableList()
|
||||
this.page = page
|
||||
this.total = result.total
|
||||
this.pageSize = pageSize
|
||||
this.hasNext = result.list.size == pageSize
|
||||
Log.d("DataLoader", "loadData完成 - 数据量: ${list.size}, total: $total, hasNext: $hasNext")
|
||||
onListChanged?.invoke(list)
|
||||
}
|
||||
|
||||
suspend fun loadMore(extra: ET) {
|
||||
if (firstLoad) {
|
||||
Log.d("DataLoader", "loadMore跳过 - firstLoad为true")
|
||||
return
|
||||
}
|
||||
if (!hasNext) {
|
||||
Log.d("DataLoader", "loadMore跳过 - hasNext为false")
|
||||
return
|
||||
}
|
||||
Log.d("DataLoader", "开始loadMore - 当前页: $page, 当前数据量: ${list.size}")
|
||||
val result = fetchData(page + 1, pageSize, extra)
|
||||
list.addAll(result.list)
|
||||
page += 1
|
||||
hasNext = result.list.size == pageSize
|
||||
Log.d("DataLoader", "loadMore完成 - 新页: $page, 新数据量: ${list.size}, 本次获取: ${result.list.size}, hasNext: $hasNext")
|
||||
onListChanged?.invoke(list)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user