diff --git a/app/src/main/java/com/huanchengfly/tieba/post/api/interfaces/ITiebaApi.kt b/app/src/main/java/com/huanchengfly/tieba/post/api/interfaces/ITiebaApi.kt index 7f9f5c20..49740c36 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/api/interfaces/ITiebaApi.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/api/interfaces/ITiebaApi.kt @@ -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 diff --git a/app/src/main/java/com/huanchengfly/tieba/post/api/interfaces/impls/MixedTiebaApiImpl.kt b/app/src/main/java/com/huanchengfly/tieba/post/api/interfaces/impls/MixedTiebaApiImpl.kt index 5e1e1fab..b41ca7bd 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/api/interfaces/impls/MixedTiebaApiImpl.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/api/interfaces/impls/MixedTiebaApiImpl.kt @@ -1110,9 +1110,9 @@ object MixedTiebaApiImpl : ITiebaApi { } override fun pbFloorFlow( - forumId: Long, threadId: Long, postId: Long, + forumId: Long, page: Int, subPostId: Long ): Flow { diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/subposts/SubPostsPage.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/subposts/SubPostsPage.kt index faac5a42..c4b45c3c 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/subposts/SubPostsPage.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/subposts/SubPostsPage.kt @@ -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 { - 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, ) ) } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/subposts/SubPostsViewModel.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/subposts/SubPostsViewModel.kt index 745671f3..29c44155 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/subposts/SubPostsViewModel.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/subposts/SubPostsViewModel.kt @@ -61,7 +61,7 @@ class SubPostsViewModel @Inject constructor() : private fun SubPostsUiIntent.Load.producePartialChange(): Flow = TiebaApi.getInstance() - .pbFloorFlow(forumId, threadId, postId, page, subPostId) + .pbFloorFlow(threadId, postId, forumId, page, subPostId) .map { 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 = TiebaApi.getInstance() - .pbFloorFlow(forumId, threadId, postId, page, subPostId) + .pbFloorFlow(threadId, postId, forumId, page, subPostId) .map { 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( diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/thread/ThreadPage.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/thread/ThreadPage.kt index 6a9c1949..4c6a613b 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/thread/ThreadPage.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/thread/ThreadPage.kt @@ -1026,7 +1026,7 @@ fun ThreadPage( forumId = curForumId, threadId = threadId, postId = item.get { id }, - subPostsId = it, + subPostId = it, loadFromSubPost = false ) ) diff --git a/app/src/main/protos/PbFloor/PbFloorRequestData.proto b/app/src/main/protos/PbFloor/PbFloorRequestData.proto index 80ca711e..45af8c26 100644 --- a/app/src/main/protos/PbFloor/PbFloorRequestData.proto +++ b/app/src/main/protos/PbFloor/PbFloorRequestData.proto @@ -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;