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