From a5e365a9d9494b6328fe72e1e5136027de86c137 Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Fri, 21 Jul 2023 22:53:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9B=9E=E5=A4=8D=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tieba/post/arch/GlobalEvent.kt | 6 +++ .../post/repository/AddPostRepository.kt | 37 +++++++++++++++++++ .../post/ui/page/reply/ReplyViewModel.kt | 6 +-- 3 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/huanchengfly/tieba/post/repository/AddPostRepository.kt diff --git a/app/src/main/java/com/huanchengfly/tieba/post/arch/GlobalEvent.kt b/app/src/main/java/com/huanchengfly/tieba/post/arch/GlobalEvent.kt index ae1d59a9..fea4ae8a 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/arch/GlobalEvent.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/arch/GlobalEvent.kt @@ -26,6 +26,12 @@ sealed interface GlobalEvent { val id: String, val images: List ) : GlobalEvent + + data class ReplySuccess( + val threadId: String, + val postId: String? = null, + val subPostId: String? = null, + ) : GlobalEvent } private val globalEventChannel: Channel = Channel() diff --git a/app/src/main/java/com/huanchengfly/tieba/post/repository/AddPostRepository.kt b/app/src/main/java/com/huanchengfly/tieba/post/repository/AddPostRepository.kt new file mode 100644 index 00000000..d9b6ca83 --- /dev/null +++ b/app/src/main/java/com/huanchengfly/tieba/post/repository/AddPostRepository.kt @@ -0,0 +1,37 @@ +package com.huanchengfly.tieba.post.repository + +import com.huanchengfly.tieba.post.api.TiebaApi +import com.huanchengfly.tieba.post.api.models.protos.addPost.AddPostResponse +import com.huanchengfly.tieba.post.arch.GlobalEvent +import com.huanchengfly.tieba.post.arch.emitGlobalEvent +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.onEach + +object AddPostRepository { + fun addPost( + content: String, + forumId: String, + forumName: String, + threadId: String, + tbs: String? = null, + nameShow: String? = null, + postId: String? = null, + subPostId: String? = null, + replyUserId: String? = null + ): Flow = + TiebaApi.getInstance() + .addPostFlow( + content, + forumId, + forumName, + threadId, + tbs, + nameShow, + postId, + subPostId, + replyUserId + ) + .onEach { + emitGlobalEvent(GlobalEvent.ReplySuccess(threadId, postId, subPostId)) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/reply/ReplyViewModel.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/reply/ReplyViewModel.kt index e229087c..db6d77bd 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/reply/ReplyViewModel.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/reply/ReplyViewModel.kt @@ -5,7 +5,6 @@ import android.util.Log import androidx.compose.runtime.Stable import com.huanchengfly.tieba.post.App import com.huanchengfly.tieba.post.R -import com.huanchengfly.tieba.post.api.TiebaApi import com.huanchengfly.tieba.post.api.models.UploadPictureResultBean import com.huanchengfly.tieba.post.api.models.protos.addPost.AddPostResponse import com.huanchengfly.tieba.post.api.retrofit.exception.TiebaUnknownException @@ -19,6 +18,7 @@ import com.huanchengfly.tieba.post.arch.UiEvent import com.huanchengfly.tieba.post.arch.UiIntent import com.huanchengfly.tieba.post.arch.UiState import com.huanchengfly.tieba.post.components.ImageUploader +import com.huanchengfly.tieba.post.repository.AddPostRepository import com.huanchengfly.tieba.post.utils.FileUtil import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList @@ -98,8 +98,8 @@ class ReplyViewModel @Inject constructor() : ) private fun ReplyUiIntent.Send.producePartialChange(): Flow { - return TiebaApi.getInstance() - .addPostFlow( + return AddPostRepository + .addPost( content, forumId.toString(), forumName,