pref: 楼中楼 API 不强制要求 `forumId` 和 `postId`
This commit is contained in:
parent
2cf960e88a
commit
f8c6df25cd
|
|
@ -1285,9 +1285,9 @@ interface ITiebaApi {
|
||||||
* @param subPostId 楼中楼回复 ID
|
* @param subPostId 楼中楼回复 ID
|
||||||
*/
|
*/
|
||||||
fun pbFloorFlow(
|
fun pbFloorFlow(
|
||||||
forumId: Long,
|
|
||||||
threadId: Long,
|
threadId: Long,
|
||||||
postId: Long,
|
postId: Long,
|
||||||
|
forumId: Long = 0L,
|
||||||
page: Int = 1,
|
page: Int = 1,
|
||||||
subPostId: Long = 0L
|
subPostId: Long = 0L
|
||||||
): Flow<PbFloorResponse>
|
): Flow<PbFloorResponse>
|
||||||
|
|
|
||||||
|
|
@ -1110,9 +1110,9 @@ object MixedTiebaApiImpl : ITiebaApi {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun pbFloorFlow(
|
override fun pbFloorFlow(
|
||||||
forumId: Long,
|
|
||||||
threadId: Long,
|
threadId: Long,
|
||||||
postId: Long,
|
postId: Long,
|
||||||
|
forumId: Long,
|
||||||
page: Int,
|
page: Int,
|
||||||
subPostId: Long
|
subPostId: Long
|
||||||
): Flow<PbFloorResponse> {
|
): Flow<PbFloorResponse> {
|
||||||
|
|
|
||||||
|
|
@ -63,10 +63,10 @@ import kotlinx.coroutines.delay
|
||||||
@Composable
|
@Composable
|
||||||
fun SubPostsPage(
|
fun SubPostsPage(
|
||||||
navigator: DestinationsNavigator,
|
navigator: DestinationsNavigator,
|
||||||
forumId: Long,
|
|
||||||
threadId: Long,
|
threadId: Long,
|
||||||
postId: Long,
|
forumId: Long = 0L,
|
||||||
subPostsId: Long = 0L,
|
postId: Long = 0L,
|
||||||
|
subPostId: Long = 0L,
|
||||||
loadFromSubPost: Boolean = false,
|
loadFromSubPost: Boolean = false,
|
||||||
viewModel: SubPostsViewModel = pageViewModel()
|
viewModel: SubPostsViewModel = pageViewModel()
|
||||||
) {
|
) {
|
||||||
|
|
@ -76,7 +76,7 @@ fun SubPostsPage(
|
||||||
forumId = forumId,
|
forumId = forumId,
|
||||||
threadId = threadId,
|
threadId = threadId,
|
||||||
postId = postId,
|
postId = postId,
|
||||||
subPostsId = subPostsId,
|
subPostId = subPostId,
|
||||||
loadFromSubPost = loadFromSubPost
|
loadFromSubPost = loadFromSubPost
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -88,10 +88,10 @@ fun SubPostsPage(
|
||||||
@Composable
|
@Composable
|
||||||
fun SubPostsSheetPage(
|
fun SubPostsSheetPage(
|
||||||
navigator: DestinationsNavigator,
|
navigator: DestinationsNavigator,
|
||||||
forumId: Long,
|
|
||||||
threadId: Long,
|
threadId: Long,
|
||||||
postId: Long,
|
forumId: Long = 0L,
|
||||||
subPostsId: Long = 0L,
|
postId: Long = 0L,
|
||||||
|
subPostId: Long = 0L,
|
||||||
loadFromSubPost: Boolean = false,
|
loadFromSubPost: Boolean = false,
|
||||||
viewModel: SubPostsViewModel = pageViewModel()
|
viewModel: SubPostsViewModel = pageViewModel()
|
||||||
) {
|
) {
|
||||||
|
|
@ -101,7 +101,7 @@ fun SubPostsSheetPage(
|
||||||
forumId = forumId,
|
forumId = forumId,
|
||||||
threadId = threadId,
|
threadId = threadId,
|
||||||
postId = postId,
|
postId = postId,
|
||||||
subPostsId = subPostsId,
|
subPostId = subPostId,
|
||||||
loadFromSubPost = loadFromSubPost
|
loadFromSubPost = loadFromSubPost
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -114,7 +114,7 @@ internal fun SubPostsContent(
|
||||||
forumId: Long,
|
forumId: Long,
|
||||||
threadId: Long,
|
threadId: Long,
|
||||||
postId: Long,
|
postId: Long,
|
||||||
subPostsId: Long = 0L,
|
subPostId: Long = 0L,
|
||||||
loadFromSubPost: Boolean = false,
|
loadFromSubPost: Boolean = false,
|
||||||
) {
|
) {
|
||||||
val navigator = LocalNavigator.current
|
val navigator = LocalNavigator.current
|
||||||
|
|
@ -125,7 +125,9 @@ internal fun SubPostsContent(
|
||||||
forumId,
|
forumId,
|
||||||
threadId,
|
threadId,
|
||||||
postId,
|
postId,
|
||||||
subPostId = subPostsId.takeIf { loadFromSubPost } ?: 0L))
|
subPostId.takeIf { loadFromSubPost } ?: 0L
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val isRefreshing by viewModel.uiState.collectPartialAsState(
|
val isRefreshing by viewModel.uiState.collectPartialAsState(
|
||||||
|
|
@ -164,12 +166,8 @@ internal fun SubPostsContent(
|
||||||
val lazyListState = rememberLazyListState()
|
val lazyListState = rememberLazyListState()
|
||||||
|
|
||||||
viewModel.onEvent<SubPostsUiEvent.ScrollToSubPosts> {
|
viewModel.onEvent<SubPostsUiEvent.ScrollToSubPosts> {
|
||||||
if (!loadFromSubPost) {
|
|
||||||
delay(20)
|
delay(20)
|
||||||
lazyListState.scrollToItem(2 + subPosts.indexOfFirst { it.get { id } == subPostsId })
|
lazyListState.scrollToItem(2 + subPosts.indexOfFirst { it.get { id } == subPostId })
|
||||||
} else {
|
|
||||||
lazyListState.scrollToItem(1)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StateScreen(
|
StateScreen(
|
||||||
|
|
@ -206,8 +204,8 @@ internal fun SubPostsContent(
|
||||||
forumId,
|
forumId,
|
||||||
threadId,
|
threadId,
|
||||||
postId,
|
postId,
|
||||||
|
subPostId,
|
||||||
currentPage + 1,
|
currentPage + 1,
|
||||||
subPostsId,
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ class SubPostsViewModel @Inject constructor() :
|
||||||
|
|
||||||
private fun SubPostsUiIntent.Load.producePartialChange(): Flow<SubPostsPartialChange.Load> =
|
private fun SubPostsUiIntent.Load.producePartialChange(): Flow<SubPostsPartialChange.Load> =
|
||||||
TiebaApi.getInstance()
|
TiebaApi.getInstance()
|
||||||
.pbFloorFlow(forumId, threadId, postId, page, subPostId)
|
.pbFloorFlow(threadId, postId, forumId, page, subPostId)
|
||||||
.map<PbFloorResponse, SubPostsPartialChange.Load> { response ->
|
.map<PbFloorResponse, SubPostsPartialChange.Load> { response ->
|
||||||
val post = checkNotNull(response.data_?.post)
|
val post = checkNotNull(response.data_?.post)
|
||||||
val page = checkNotNull(response.data_?.page)
|
val page = checkNotNull(response.data_?.page)
|
||||||
|
|
@ -81,7 +81,7 @@ class SubPostsViewModel @Inject constructor() :
|
||||||
|
|
||||||
private fun SubPostsUiIntent.LoadMore.producePartialChange(): Flow<SubPostsPartialChange.LoadMore> =
|
private fun SubPostsUiIntent.LoadMore.producePartialChange(): Flow<SubPostsPartialChange.LoadMore> =
|
||||||
TiebaApi.getInstance()
|
TiebaApi.getInstance()
|
||||||
.pbFloorFlow(forumId, threadId, postId, page, subPostId)
|
.pbFloorFlow(threadId, postId, forumId, page, subPostId)
|
||||||
.map<PbFloorResponse, SubPostsPartialChange.LoadMore> { response ->
|
.map<PbFloorResponse, SubPostsPartialChange.LoadMore> { response ->
|
||||||
val post = checkNotNull(response.data_?.post)
|
val post = checkNotNull(response.data_?.post)
|
||||||
val page = checkNotNull(response.data_?.page)
|
val page = checkNotNull(response.data_?.page)
|
||||||
|
|
@ -118,16 +118,16 @@ sealed interface SubPostsUiIntent : UiIntent {
|
||||||
val forumId: Long,
|
val forumId: Long,
|
||||||
val threadId: Long,
|
val threadId: Long,
|
||||||
val postId: Long,
|
val postId: Long,
|
||||||
|
val subPostId: Long = 0L,
|
||||||
val page: Int = 1,
|
val page: Int = 1,
|
||||||
val subPostId: Long = 0L
|
|
||||||
) : SubPostsUiIntent
|
) : SubPostsUiIntent
|
||||||
|
|
||||||
data class LoadMore(
|
data class LoadMore(
|
||||||
val forumId: Long,
|
val forumId: Long,
|
||||||
val threadId: Long,
|
val threadId: Long,
|
||||||
val postId: Long,
|
val postId: Long,
|
||||||
|
val subPostId: Long = 0L,
|
||||||
val page: Int = 1,
|
val page: Int = 1,
|
||||||
val subPostId: Long = 0L
|
|
||||||
) : SubPostsUiIntent
|
) : SubPostsUiIntent
|
||||||
|
|
||||||
data class Agree(
|
data class Agree(
|
||||||
|
|
|
||||||
|
|
@ -1026,7 +1026,7 @@ fun ThreadPage(
|
||||||
forumId = curForumId,
|
forumId = curForumId,
|
||||||
threadId = threadId,
|
threadId = threadId,
|
||||||
postId = item.get { id },
|
postId = item.get { id },
|
||||||
subPostsId = it,
|
subPostId = it,
|
||||||
loadFromSubPost = false
|
loadFromSubPost = false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import "CommonRequest.proto";
|
||||||
|
|
||||||
message PbFloorRequestData {
|
message PbFloorRequestData {
|
||||||
int64 kz = 1;
|
int64 kz = 1;
|
||||||
int64 pid = 2;
|
optional int64 pid = 2;
|
||||||
optional int64 spid = 3;
|
optional int64 spid = 3;
|
||||||
int32 pn = 4;
|
int32 pn = 4;
|
||||||
int32 scr_w = 5;
|
int32 scr_w = 5;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue