From cc23992d2ebd98060fc1e46298b130efa57eb2fe Mon Sep 17 00:00:00 2001 From: klaus Date: Wed, 15 Jul 2026 21:27:37 +0900 Subject: [PATCH] =?UTF-8?q?refactor(home):=20=EC=B6=94=EC=B2=9C=20?= =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EC=A7=84=EC=9E=85=EC=9D=84=20?= =?UTF-8?q?=EA=B3=B5=ED=86=B5=ED=99=94=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/v2/main/home/HomeMainFragment.kt | 18 +++++-------- .../HomeMainFragmentLoginGuardSourceTest.kt | 27 ++++--------------- 2 files changed, 11 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt index 9ab70e8b..b2ea4daf 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt @@ -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( 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( } 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() { diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLoginGuardSourceTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLoginGuardSourceTest.kt index 71a9d1e2..88df38c5 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLoginGuardSourceTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLoginGuardSourceTest.kt @@ -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