pref: 楼中楼 API 不强制要求 `forumId` 和 `postId`
This commit is contained in:
parent
2cf960e88a
commit
f8c6df25cd
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1110,9 +1110,9 @@ object MixedTiebaApiImpl : ITiebaApi {
|
|||
}
|
||||
|
||||
override fun pbFloorFlow(
|
||||
forumId: Long,
|
||||
threadId: Long,
|
||||
postId: Long,
|
||||
forumId: Long,
|
||||
page: Int,
|
||||
subPostId: Long
|
||||
): Flow<PbFloorResponse> {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -1026,7 +1026,7 @@ fun ThreadPage(
|
|||
forumId = curForumId,
|
||||
threadId = threadId,
|
||||
postId = item.get { id },
|
||||
subPostsId = it,
|
||||
subPostId = it,
|
||||
loadFromSubPost = false
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue