From e691f78e2eef3300ecb6e4bd71222c5e52d0b88f Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 9 Jul 2026 00:53:59 +0900 Subject: [PATCH] =?UTF-8?q?feat(creator-channel):=20=EC=BB=A4=EB=AE=A4?= =?UTF-8?q?=EB=8B=88=ED=8B=B0=20=EC=83=81=EC=84=B8=20=EC=A7=84=EC=9E=85?= =?UTF-8?q?=EC=A0=90=EC=9D=84=20=EC=97=B0=EA=B2=B0=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 6 ++++++ .../java/kr/co/vividnext/sodalive/di/AppDI.kt | 4 ++++ .../creator/channel/CreatorChannelActivity.kt | 18 ++++++++++++++++++ .../CreatorChannelCommunityFragment.kt | 6 +++++- 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ba32e368..82f7bf95 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -114,6 +114,12 @@ + + diff --git a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt index 811be663..f2f2ae6d 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt @@ -181,6 +181,8 @@ import kr.co.vividnext.sodalive.user.signup.SignUpViewModel import kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeViewModel import kr.co.vividnext.sodalive.v2.creator.channel.audio.CreatorChannelAudioViewModel import kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityViewModel +import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.CreatorChannelCommunityDetailViewModel +import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.reply.CreatorChannelCommunityReplyViewModel import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelApi import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelRepository import kr.co.vividnext.sodalive.v2.creator.channel.donation.CreatorChannelDonationViewModel @@ -453,6 +455,8 @@ class AppDI(private val context: Context, isDebugMode: Boolean) { viewModel { CreatorChannelAudioViewModel(get()) } viewModel { CreatorChannelSeriesViewModel(get()) } viewModel { CreatorChannelCommunityViewModel(get(), get()) } + viewModel { CreatorChannelCommunityDetailViewModel(get(), get(), get()) } + viewModel { CreatorChannelCommunityReplyViewModel(get(), get(), get()) } viewModel { CreatorChannelFanTalkViewModel(get(), get()) } viewModel { CreatorChannelFanTalkWriteViewModel(get()) } viewModel { CreatorChannelDonationViewModel(get(), get()) } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt index 52d33bf7..70432663 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt @@ -58,6 +58,7 @@ import kr.co.vividnext.sodalive.v2.components.modal.V2ModalDialog import kr.co.vividnext.sodalive.v2.common.CreatorActivityType import kr.co.vividnext.sodalive.v2.creator.channel.audio.CreatorChannelAudioFragment import kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityFragment +import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.CreatorChannelCommunityDetailActivity import kr.co.vividnext.sodalive.v2.creator.channel.community.model.CreatorChannelCommunityPostUiModel import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelAudioContentResponse import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelLiveResponse @@ -129,6 +130,13 @@ class CreatorChannelActivity : refreshCreatorChannelCommunity() } } + private val communityDetailLauncher = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode == RESULT_OK) { + refreshCreatorChannelCommunity() + } + } private val fanTalkWriteLauncher = registerForActivityResult( ActivityResultContracts.StartActivityForResult() ) { result -> @@ -568,6 +576,16 @@ class CreatorChannelActivity : } } + override fun onCreatorChannelCommunityPostClicked(postId: Long) { + if (postId <= 0L) return + if (SharedPreferenceManager.token.isBlank()) { + showLoginActivity() + return + } + + communityDetailLauncher.launch(CreatorChannelCommunityDetailActivity.newIntent(this, postId)) + } + override fun onCreatorChannelFanTalkContentChanged() { updateViewPagerHeight { postCheckCreatorChannelCurrentTabNeedsMore() diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityFragment.kt index a91aecdb..f9bb7bc7 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityFragment.kt @@ -28,11 +28,14 @@ class CreatorChannelCommunityFragment : BaseFragment host.onCreatorChannelCommunityPostClicked(item.postId) }, onPlayClick = { item -> toggleCommunityAudio(item) }, onOwnerMoreClick = { item -> host.onCreatorChannelCommunityOwnerMoreClicked(item) }, isPlayingContent = { postId -> mediaPlayerManager?.isPlayingContent(postId) == true } ) - private val gridAdapter = CreatorChannelCommunityGridAdapter() + private val gridAdapter = CreatorChannelCommunityGridAdapter( + onPostClick = { item -> host.onCreatorChannelCommunityPostClicked(item.postId) } + ) private var mediaPlayerManager: CreatorCommunityMediaPlayerManager? = null private var currentContentState: CreatorChannelCommunityUiState.Content? = null private var lastContentLayoutKey: CreatorChannelCommunityContentLayoutKey? = null @@ -225,6 +228,7 @@ class CreatorChannelCommunityFragment : BaseFragment