pref: 楼中楼 API 不强制要求 `forumId` 和 `postId`

This commit is contained in:
HuanCheng65 2023-07-17 12:45:39 +08:00
parent 2cf960e88a
commit f8c6df25cd
No known key found for this signature in database
GPG Key ID: 5EC9DD60A32C7360
6 changed files with 23 additions and 25 deletions

View File

@ -1285,9 +1285,9 @@ interface ITiebaApi {
* @param subPostId 楼中楼回复 ID
*/
fun pbFloorFlow(
forumId: Long,
threadId: Long,
postId: Long,
forumId: Long = 0L,
page: Int = 1,
subPostId: Long = 0L
): Flow<PbFloorResponse>

View File

@ -1110,9 +1110,9 @@ object MixedTiebaApiImpl : ITiebaApi {
}
override fun pbFloorFlow(
forumId: Long,
threadId: Long,
postId: Long,
forumId: Long,
page: Int,
subPostId: Long
): Flow<PbFloorResponse> {

View File

@ -63,10 +63,10 @@ import kotlinx.coroutines.delay
@Composable
fun SubPostsPage(
navigator: DestinationsNavigator,
forumId: Long,
threadId: Long,
postId: Long,
subPostsId: Long = 0L,
forumId: Long = 0L,
postId: Long = 0L,
subPostId: Long = 0L,
loadFromSubPost: Boolean = false,
viewModel: SubPostsViewModel = pageViewModel()
) {
@ -76,7 +76,7 @@ fun SubPostsPage(
forumId = forumId,
threadId = threadId,
postId = postId,
subPostsId = subPostsId,
subPostId = subPostId,
loadFromSubPost = loadFromSubPost
)
}
@ -88,10 +88,10 @@ fun SubPostsPage(
@Composable
fun SubPostsSheetPage(
navigator: DestinationsNavigator,
forumId: Long,
threadId: Long,
postId: Long,
subPostsId: Long = 0L,
forumId: Long = 0L,
postId: Long = 0L,
subPostId: Long = 0L,
loadFromSubPost: Boolean = false,
viewModel: SubPostsViewModel = pageViewModel()
) {
@ -101,7 +101,7 @@ fun SubPostsSheetPage(
forumId = forumId,
threadId = threadId,
postId = postId,
subPostsId = subPostsId,
subPostId = subPostId,
loadFromSubPost = loadFromSubPost
)
}
@ -114,7 +114,7 @@ internal fun SubPostsContent(
forumId: Long,
threadId: Long,
postId: Long,
subPostsId: Long = 0L,
subPostId: Long = 0L,
loadFromSubPost: Boolean = false,
) {
val navigator = LocalNavigator.current
@ -125,7 +125,9 @@ internal fun SubPostsContent(
forumId,
threadId,
postId,
subPostId = subPostsId.takeIf { loadFromSubPost } ?: 0L))
subPostId.takeIf { loadFromSubPost } ?: 0L
)
)
}
val isRefreshing by viewModel.uiState.collectPartialAsState(
@ -164,12 +166,8 @@ internal fun SubPostsContent(
val lazyListState = rememberLazyListState()
viewModel.onEvent<SubPostsUiEvent.ScrollToSubPosts> {
if (!loadFromSubPost) {
delay(20)
lazyListState.scrollToItem(2 + subPosts.indexOfFirst { it.get { id } == subPostsId })
} else {
lazyListState.scrollToItem(1)
}
delay(20)
lazyListState.scrollToItem(2 + subPosts.indexOfFirst { it.get { id } == subPostId })
}
StateScreen(
@ -206,8 +204,8 @@ internal fun SubPostsContent(
forumId,
threadId,
postId,
subPostId,
currentPage + 1,
subPostsId,
)
)
}

View File

@ -61,7 +61,7 @@ class SubPostsViewModel @Inject constructor() :
private fun SubPostsUiIntent.Load.producePartialChange(): Flow<SubPostsPartialChange.Load> =
TiebaApi.getInstance()
.pbFloorFlow(forumId, threadId, postId, page, subPostId)
.pbFloorFlow(threadId, postId, forumId, page, subPostId)
.map<PbFloorResponse, SubPostsPartialChange.Load> { response ->
val post = checkNotNull(response.data_?.post)
val page = checkNotNull(response.data_?.page)
@ -81,7 +81,7 @@ class SubPostsViewModel @Inject constructor() :
private fun SubPostsUiIntent.LoadMore.producePartialChange(): Flow<SubPostsPartialChange.LoadMore> =
TiebaApi.getInstance()
.pbFloorFlow(forumId, threadId, postId, page, subPostId)
.pbFloorFlow(threadId, postId, forumId, page, subPostId)
.map<PbFloorResponse, SubPostsPartialChange.LoadMore> { response ->
val post = checkNotNull(response.data_?.post)
val page = checkNotNull(response.data_?.page)
@ -118,16 +118,16 @@ sealed interface SubPostsUiIntent : UiIntent {
val forumId: Long,
val threadId: Long,
val postId: Long,
val subPostId: Long = 0L,
val page: Int = 1,
val subPostId: Long = 0L
) : SubPostsUiIntent
data class LoadMore(
val forumId: Long,
val threadId: Long,
val postId: Long,
val subPostId: Long = 0L,
val page: Int = 1,
val subPostId: Long = 0L
) : SubPostsUiIntent
data class Agree(

View File

@ -1026,7 +1026,7 @@ fun ThreadPage(
forumId = curForumId,
threadId = threadId,
postId = item.get { id },
subPostsId = it,
subPostId = it,
loadFromSubPost = false
)
)

View File

@ -8,7 +8,7 @@ import "CommonRequest.proto";
message PbFloorRequestData {
int64 kz = 1;
int64 pid = 2;
optional int64 pid = 2;
optional int64 spid = 3;
int32 pn = 4;
int32 scr_w = 5;