feat(creator-channel): 커뮤니티 상세 진입점을 연결한다

This commit is contained in:
2026-07-09 00:53:59 +09:00
parent 6125b9f7d1
commit e691f78e2e
4 changed files with 33 additions and 1 deletions

View File

@@ -114,6 +114,12 @@
<activity android:name=".v2.main.MainV2Activity" /> <activity android:name=".v2.main.MainV2Activity" />
<activity android:name=".v2.main.content.overview.ContentOverviewActivity" /> <activity android:name=".v2.main.content.overview.ContentOverviewActivity" />
<activity android:name=".v2.creator.channel.CreatorChannelActivity" /> <activity android:name=".v2.creator.channel.CreatorChannelActivity" />
<activity
android:name=".v2.creator.channel.community.detail.CreatorChannelCommunityDetailActivity"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
<activity
android:name=".v2.creator.channel.community.detail.reply.CreatorChannelCommunityReplyActivity"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
<activity <activity
android:name=".v2.creator.channel.fantalk.write.CreatorChannelFanTalkWriteActivity" android:name=".v2.creator.channel.fantalk.write.CreatorChannelFanTalkWriteActivity"
android:windowSoftInputMode="stateVisible|adjustResize" /> android:windowSoftInputMode="stateVisible|adjustResize" />

View File

@@ -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.CreatorChannelHomeViewModel
import kr.co.vividnext.sodalive.v2.creator.channel.audio.CreatorChannelAudioViewModel 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.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.CreatorChannelApi
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelRepository import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelRepository
import kr.co.vividnext.sodalive.v2.creator.channel.donation.CreatorChannelDonationViewModel 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 { CreatorChannelAudioViewModel(get()) }
viewModel { CreatorChannelSeriesViewModel(get()) } viewModel { CreatorChannelSeriesViewModel(get()) }
viewModel { CreatorChannelCommunityViewModel(get(), get()) } viewModel { CreatorChannelCommunityViewModel(get(), get()) }
viewModel { CreatorChannelCommunityDetailViewModel(get(), get(), get()) }
viewModel { CreatorChannelCommunityReplyViewModel(get(), get(), get()) }
viewModel { CreatorChannelFanTalkViewModel(get(), get()) } viewModel { CreatorChannelFanTalkViewModel(get(), get()) }
viewModel { CreatorChannelFanTalkWriteViewModel(get()) } viewModel { CreatorChannelFanTalkWriteViewModel(get()) }
viewModel { CreatorChannelDonationViewModel(get(), get()) } viewModel { CreatorChannelDonationViewModel(get(), get()) }

View File

@@ -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.common.CreatorActivityType
import kr.co.vividnext.sodalive.v2.creator.channel.audio.CreatorChannelAudioFragment 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.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.community.model.CreatorChannelCommunityPostUiModel
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelAudioContentResponse import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelAudioContentResponse
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelLiveResponse import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelLiveResponse
@@ -129,6 +130,13 @@ class CreatorChannelActivity :
refreshCreatorChannelCommunity() refreshCreatorChannelCommunity()
} }
} }
private val communityDetailLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == RESULT_OK) {
refreshCreatorChannelCommunity()
}
}
private val fanTalkWriteLauncher = registerForActivityResult( private val fanTalkWriteLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult() ActivityResultContracts.StartActivityForResult()
) { result -> ) { 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() { override fun onCreatorChannelFanTalkContentChanged() {
updateViewPagerHeight { updateViewPagerHeight {
postCheckCreatorChannelCurrentTabNeedsMore() postCheckCreatorChannelCurrentTabNeedsMore()

View File

@@ -28,11 +28,14 @@ class CreatorChannelCommunityFragment : BaseFragment<FragmentCreatorChannelCommu
private val viewModel: CreatorChannelCommunityViewModel by viewModel() private val viewModel: CreatorChannelCommunityViewModel by viewModel()
private val listAdapter = CreatorChannelCommunityListAdapter( private val listAdapter = CreatorChannelCommunityListAdapter(
onPostClick = { item -> host.onCreatorChannelCommunityPostClicked(item.postId) },
onPlayClick = { item -> toggleCommunityAudio(item) }, onPlayClick = { item -> toggleCommunityAudio(item) },
onOwnerMoreClick = { item -> host.onCreatorChannelCommunityOwnerMoreClicked(item) }, onOwnerMoreClick = { item -> host.onCreatorChannelCommunityOwnerMoreClicked(item) },
isPlayingContent = { postId -> mediaPlayerManager?.isPlayingContent(postId) == true } 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 mediaPlayerManager: CreatorCommunityMediaPlayerManager? = null
private var currentContentState: CreatorChannelCommunityUiState.Content? = null private var currentContentState: CreatorChannelCommunityUiState.Content? = null
private var lastContentLayoutKey: CreatorChannelCommunityContentLayoutKey? = null private var lastContentLayoutKey: CreatorChannelCommunityContentLayoutKey? = null
@@ -225,6 +228,7 @@ class CreatorChannelCommunityFragment : BaseFragment<FragmentCreatorChannelCommu
interface Host { interface Host {
fun isCreatorChannelOwner(): Boolean fun isCreatorChannelOwner(): Boolean
fun onCreatorChannelCommunityContentChanged() fun onCreatorChannelCommunityContentChanged()
fun onCreatorChannelCommunityPostClicked(postId: Long)
fun onCreatorChannelCommunityOwnerMoreClicked(item: CreatorChannelCommunityPostUiModel) fun onCreatorChannelCommunityOwnerMoreClicked(item: CreatorChannelCommunityPostUiModel)
} }