feat(creator-channel): FanTalk 상세 진입점을 연결한다
This commit is contained in:
@@ -65,6 +65,9 @@ import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelLiveRespon
|
|||||||
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelScheduleResponse
|
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelScheduleResponse
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelSeriesResponse
|
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelSeriesResponse
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.CreatorChannelFanTalkFragment
|
import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.CreatorChannelFanTalkFragment
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.detail.CreatorChannelFanTalkDetailActivity
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.detail.toFanTalkDetailPayload
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.model.CreatorChannelFanTalkUiModel
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.write.CreatorChannelFanTalkWriteActivity
|
import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.write.CreatorChannelFanTalkWriteActivity
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.donation.CreatorChannelDonationFragment
|
import kr.co.vividnext.sodalive.v2.creator.channel.donation.CreatorChannelDonationFragment
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveFragment
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveFragment
|
||||||
@@ -145,6 +148,14 @@ class CreatorChannelActivity :
|
|||||||
homeActionDelegate?.refreshHome()
|
homeActionDelegate?.refreshHome()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private val fanTalkDetailLauncher = registerForActivityResult(
|
||||||
|
ActivityResultContracts.StartActivityForResult()
|
||||||
|
) { result ->
|
||||||
|
if (result.resultCode == RESULT_OK) {
|
||||||
|
refreshCreatorChannelFanTalk()
|
||||||
|
homeActionDelegate?.refreshHome()
|
||||||
|
}
|
||||||
|
}
|
||||||
private val liveRoomCreateLauncher = registerForActivityResult(
|
private val liveRoomCreateLauncher = registerForActivityResult(
|
||||||
ActivityResultContracts.StartActivityForResult()
|
ActivityResultContracts.StartActivityForResult()
|
||||||
) { result ->
|
) { result ->
|
||||||
@@ -596,6 +607,19 @@ class CreatorChannelActivity :
|
|||||||
openFanTalkWrite()
|
openFanTalkWrite()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreatorChannelFanTalkItemClicked(item: CreatorChannelFanTalkUiModel) {
|
||||||
|
if (currentHeader?.isOwner != true) return
|
||||||
|
if (creatorId <= 0L || item.fanTalkId <= 0L) return
|
||||||
|
if (SharedPreferenceManager.token.isBlank()) {
|
||||||
|
showLoginActivity()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fanTalkDetailLauncher.launch(
|
||||||
|
CreatorChannelFanTalkDetailActivity.newIntent(this, creatorId, item.toFanTalkDetailPayload())
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreatorChannelFanTalkFloatingButtonVisibilityChanged(isVisible: Boolean) {
|
override fun onCreatorChannelFanTalkFloatingButtonVisibilityChanged(isVisible: Boolean) {
|
||||||
isFanTalkFixedPlusVisible = isVisible
|
isFanTalkFixedPlusVisible = isVisible
|
||||||
updateFanTalkFixedPlusVisibility()
|
updateFanTalkFixedPlusVisibility()
|
||||||
|
|||||||
@@ -2106,6 +2106,38 @@ class CreatorChannelActivitySourceTest {
|
|||||||
assertTrue(dmRoom.contains("putExtra(EXTRA_CREATOR_ID, creatorId)"))
|
assertTrue(dmRoom.contains("putExtra(EXTRA_CREATOR_ID, creatorId)"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `FanTalk item click source는 owner gate와 상세 ActivityResult refresh를 연결한다`() {
|
||||||
|
val source = projectFile(
|
||||||
|
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
|
||||||
|
).readText()
|
||||||
|
|
||||||
|
assertTrue(
|
||||||
|
source.contains(
|
||||||
|
"import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.detail.CreatorChannelFanTalkDetailActivity"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assertTrue(
|
||||||
|
source.contains(
|
||||||
|
"import kr.co.vividnext.sodalive.v2.creator.channel.fantalk.detail.toFanTalkDetailPayload"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assertTrue(source.contains("private val fanTalkDetailLauncher = registerForActivityResult"))
|
||||||
|
assertTrue(source.contains("override fun onCreatorChannelFanTalkItemClicked(item: CreatorChannelFanTalkUiModel)"))
|
||||||
|
assertTrue(source.contains("if (currentHeader?.isOwner != true) return"))
|
||||||
|
assertTrue(source.contains("if (creatorId <= 0L || item.fanTalkId <= 0L) return"))
|
||||||
|
assertTrue(source.contains("if (SharedPreferenceManager.token.isBlank())"))
|
||||||
|
assertTrue(source.contains("showLoginActivity()"))
|
||||||
|
assertTrue(source.contains("fanTalkDetailLauncher.launch("))
|
||||||
|
assertTrue(
|
||||||
|
source.contains(
|
||||||
|
"CreatorChannelFanTalkDetailActivity.newIntent(this, creatorId, item.toFanTalkDetailPayload())"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assertTrue(source.contains("refreshCreatorChannelFanTalk()"))
|
||||||
|
assertTrue(source.contains("homeActionDelegate?.refreshHome()"))
|
||||||
|
}
|
||||||
|
|
||||||
private fun projectFile(relativePath: String): File {
|
private fun projectFile(relativePath: String): File {
|
||||||
val candidates = listOf(File(relativePath), File("../$relativePath"))
|
val candidates = listOf(File(relativePath), File("../$relativePath"))
|
||||||
return candidates.firstOrNull { it.exists() }
|
return candidates.firstOrNull { it.exists() }
|
||||||
|
|||||||
Reference in New Issue
Block a user