refactor(home): 추천 라이브 진입을 공통화한다
This commit is contained in:
@@ -18,9 +18,9 @@ import kr.co.vividnext.sodalive.live.LiveViewModel
|
||||
import kr.co.vividnext.sodalive.mypage.can.charge.CanChargeActivity
|
||||
import kr.co.vividnext.sodalive.search.SearchActivity
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivity
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelLiveCoordinator
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.CreatorChannelCommunityDetailActivity
|
||||
import kr.co.vividnext.sodalive.v2.live.onair.HomeOnAirLiveActivity
|
||||
import kr.co.vividnext.sodalive.v2.live.action.LiveActionCoordinator
|
||||
import kr.co.vividnext.sodalive.v2.main.chat.dm.DmChatRoomActivity
|
||||
import kr.co.vividnext.sodalive.v2.main.chat.model.ChatRoomListUiItem
|
||||
import kr.co.vividnext.sodalive.v2.main.chat.model.ChatRoomType
|
||||
@@ -87,14 +87,15 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
private val homeFollowingViewModel: HomeFollowingViewModel by viewModel()
|
||||
private val liveViewModel: LiveViewModel by inject()
|
||||
private val loadingDialog: LoadingDialog by lazy { LoadingDialog(requireActivity(), layoutInflater) }
|
||||
private val liveCoordinator: CreatorChannelLiveCoordinator by lazy {
|
||||
CreatorChannelLiveCoordinator(
|
||||
private val liveActionCoordinator: LiveActionCoordinator by lazy {
|
||||
LiveActionCoordinator(
|
||||
activity = requireActivity(),
|
||||
layoutInflater = layoutInflater,
|
||||
fragmentManager = requireActivity().supportFragmentManager,
|
||||
liveViewModel = liveViewModel,
|
||||
screenWidthProvider = { screenWidth },
|
||||
refreshHome = { homeRecommendationViewModel.loadRecommendations() }
|
||||
refreshHome = { homeRecommendationViewModel.loadRecommendations() },
|
||||
canHandleResult = { isAdded && view != null }
|
||||
)
|
||||
}
|
||||
private val liveAdapter = HomeLiveAdapter()
|
||||
@@ -536,14 +537,7 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
}
|
||||
|
||||
private fun onLiveClick(item: HomeRecommendationLiveUiModel) {
|
||||
ensureV2Access(AccessRequirement.Login) {
|
||||
liveViewModel.getRoomDetail(item.roomId) { roomDetail ->
|
||||
if (!isAdded || view == null) return@getRoomDetail
|
||||
ensureV2Access(AccessRequirement.forAdultContent(roomDetail.isAdult)) {
|
||||
liveCoordinator.enterLiveRoom(item.roomId, roomDetail)
|
||||
}
|
||||
}
|
||||
}
|
||||
liveActionCoordinator.enterLiveRoom(item.roomId)
|
||||
}
|
||||
|
||||
private fun openHomeOnAirLive() {
|
||||
|
||||
@@ -115,33 +115,16 @@ class HomeMainFragmentLoginGuardSourceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `HomeMainFragment 추천 라이브 아이템은 로그인과 성인 가드 후 기존 입장 흐름을 실행한다`() {
|
||||
fun `HomeMainFragment 추천 라이브 아이템은 공통 Live Action으로 입장한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt"
|
||||
).readText()
|
||||
|
||||
val clickSource = source.substringFrom("private fun onLiveClick(item: HomeRecommendationLiveUiModel)")
|
||||
assertTrue(clickSource.contains("ensureV2Access"))
|
||||
assertTrue(clickSource.contains("liveViewModel.getRoomDetail(item.roomId) { roomDetail ->"))
|
||||
assertBefore(
|
||||
clickSource,
|
||||
"if (!isAdded || view == null) return@getRoomDetail",
|
||||
"AccessRequirement.forAdultContent(roomDetail.isAdult)"
|
||||
)
|
||||
assertBefore(
|
||||
clickSource,
|
||||
"liveViewModel.getRoomDetail(item.roomId) { roomDetail ->",
|
||||
"AccessRequirement.forAdultContent(roomDetail.isAdult)"
|
||||
)
|
||||
assertBefore(
|
||||
clickSource,
|
||||
"AccessRequirement.forAdultContent(roomDetail.isAdult)",
|
||||
"liveCoordinator.enterLiveRoom(item.roomId, roomDetail)"
|
||||
)
|
||||
assertFalse(clickSource.contains("= Unit"))
|
||||
|
||||
assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelLiveCoordinator"))
|
||||
assertTrue(source.contains("private val liveCoordinator: CreatorChannelLiveCoordinator by lazy"))
|
||||
assertTrue(clickSource.contains("liveActionCoordinator.enterLiveRoom(item.roomId)"))
|
||||
assertFalse(clickSource.contains("liveViewModel.getRoomDetail(item.roomId)"))
|
||||
assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.live.action.LiveActionCoordinator"))
|
||||
assertTrue(source.contains("private val liveActionCoordinator: LiveActionCoordinator by lazy"))
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user