From 2fda80d6029e211d14905f87cc447fc9ec145885 Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 14 Jul 2026 20:44:53 +0900 Subject: [PATCH] =?UTF-8?q?refactor(content):=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=20=EC=A0=91=EA=B7=BC=20=EA=B0=80=EB=93=9C=EB=A5=BC=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 --- .../v2/main/content/ContentMainFragment.kt | 15 ++++++++------- .../ContentMainFragmentLoginGuardSourceTest.kt | 10 +++++----- .../main/content/ContentMainFragmentSourceTest.kt | 6 +++--- .../ContentMainTitleBarActionSourceTest.kt | 2 +- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt index 877b38f4..d0500866 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt @@ -29,7 +29,8 @@ import kr.co.vividnext.sodalive.v2.common.data.ContentSort import kr.co.vividnext.sodalive.v2.creator.channel.model.toLabelResId import kr.co.vividnext.sodalive.v2.creator.channel.ui.CreatorChannelSortPopup import kr.co.vividnext.sodalive.v2.main.MainV2Activity -import kr.co.vividnext.sodalive.v2.main.ensureMainV2NavigationAllowed +import kr.co.vividnext.sodalive.v2.access.AccessRequirement +import kr.co.vividnext.sodalive.v2.access.ensureV2Access import kr.co.vividnext.sodalive.v2.main.content.data.AudioRankingType import kr.co.vividnext.sodalive.v2.main.content.data.MainContentAllType import kr.co.vividnext.sodalive.v2.main.content.model.AudioRankingsUiState @@ -147,7 +148,7 @@ class ContentMainFragment : BaseFragment( } private fun openWithLoginGuard(activityClass: Class<*>) { - ensureMainV2NavigationAllowed { + ensureV2Access(AccessRequirement.Login) { startActivity(Intent(requireContext(), activityClass)) } } @@ -615,19 +616,19 @@ class ContentMainFragment : BaseFragment( private fun onBannerClick(item: ContentBannerUiModel) { val route = item.toContentBannerRoute() ?: return - ensureMainV2NavigationAllowed { + ensureV2Access(AccessRequirement.Login) { startActivity(route.toContentBannerIntent(requireContext())) } } private fun openContentAllTab(type: MainContentAllType, sort: ContentSort) { - ensureMainV2NavigationAllowed { + ensureV2Access(AccessRequirement.Login) { (activity as? MainV2Activity)?.openContentAllTab(type, sort) } } private fun openContentOverview(type: ContentOverviewType) { - ensureMainV2NavigationAllowed { + ensureV2Access(AccessRequirement.Login) { startActivity(ContentOverviewActivity.newIntent(requireContext(), type)) } } @@ -645,7 +646,7 @@ class ContentMainFragment : BaseFragment( requiresAdultContentAccess: Boolean = false ) { if (audioContentId <= 0L) return - ensureMainV2NavigationAllowed(requiresAdultContentAccess = requiresAdultContentAccess) { + ensureV2Access(AccessRequirement.forAdultContent(requiresAdultContentAccess)) { startActivity( Intent(requireContext(), AudioContentDetailActivity::class.java).apply { putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, audioContentId) @@ -669,7 +670,7 @@ class ContentMainFragment : BaseFragment( requiresAdultContentAccess: Boolean = false ) { if (seriesId <= 0L) return - ensureMainV2NavigationAllowed(requiresAdultContentAccess = requiresAdultContentAccess) { + ensureV2Access(AccessRequirement.forAdultContent(requiresAdultContentAccess)) { startActivity( Intent(requireContext(), SeriesDetailActivity::class.java).apply { putExtra(Constants.EXTRA_SERIES_ID, seriesId) diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentLoginGuardSourceTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentLoginGuardSourceTest.kt index 71bcde7c..dab1dfed 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentLoginGuardSourceTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentLoginGuardSourceTest.kt @@ -13,7 +13,7 @@ class ContentMainFragmentLoginGuardSourceTest { "app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt" ).readText() - assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.main.ensureMainV2NavigationAllowed")) + assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.access.ensureV2Access")) assertGuardedStartActivity(source, "private fun onBannerClick(item: ContentBannerUiModel)") assertGuardedStartActivity(source, "audioContentId: Long,\n requiresAdultContentAccess: Boolean = false") assertGuardedStartActivity(source, "seriesId: Long,\n requiresAdultContentAccess: Boolean = false") @@ -40,7 +40,7 @@ class ContentMainFragmentLoginGuardSourceTest { assertTrue(source.contains("openAudioContentDetail(item.audioContentId, item.showAdultBadge)")) assertTrue(source.contains("openAudioContentDetail(audioContentId, findAllTabAudioAdultAccess(audioContentId))")) assertTrue(source.contains("openSeriesDetail(seriesId, findAllTabSeriesAdultAccess(seriesId))")) - assertTrue(source.contains("requiresAdultContentAccess = requiresAdultContentAccess")) + assertTrue(source.contains("AccessRequirement.forAdultContent(requiresAdultContentAccess)")) assertFalse(source.contains("ContentCommentedAudioUiModel.showAdultBadge")) assertFalse(source.contains("ContentOriginalSeriesUiModel.showAdultBadge")) } @@ -48,14 +48,14 @@ class ContentMainFragmentLoginGuardSourceTest { private fun assertGuardedStartActivity(source: String, functionSignature: String) { val functionSource = source.substringFrom(functionSignature) assertTrue( - "$functionSignature must call ensureMainV2NavigationAllowed before startActivity.", - functionSource.indexOf("ensureMainV2NavigationAllowed") in 0 until functionSource.indexOf("startActivity") + "$functionSignature must call ensureV2Access before startActivity.", + functionSource.indexOf("ensureV2Access") in 0 until functionSource.indexOf("startActivity") ) } private fun assertBeforeGuard(source: String, expectedReturn: String) { val returnIndex = source.indexOf(expectedReturn) - val guardIndex = source.indexOf("ensureMainV2NavigationAllowed", returnIndex) + val guardIndex = source.indexOf("ensureV2Access", returnIndex) assertTrue("Missing source: $expectedReturn", returnIndex >= 0) assertTrue("$expectedReturn must stay before guard.", guardIndex > returnIndex) diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentSourceTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentSourceTest.kt index 631a0d32..f6e203e5 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentSourceTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentSourceTest.kt @@ -392,7 +392,7 @@ class ContentMainFragmentSourceTest { assertSourceContains(source, "import kr.co.vividnext.sodalive.v2.main.MainV2Activity") assertSourceContains(source, "private fun openContentAllTab(type: MainContentAllType, sort: ContentSort)") - assertSourceContains(source, "ensureMainV2NavigationAllowed") + assertSourceContains(source, "ensureV2Access") assertSourceContains(source, "(activity as? MainV2Activity)?.openContentAllTab(type, sort)") assertSourceContains(source, "binding.viewContentOriginalSeriesTitle.ivSectionTitleChevron.setOnClickListener") assertSourceContains(source, "openContentAllTab(MainContentAllType.ORIGINAL, ContentSort.LATEST)") @@ -407,10 +407,10 @@ class ContentMainFragmentSourceTest { assertTrue(source.contains("viewContentNewAndHotTitle.ivSectionTitleChevron.setOnClickListener")) assertTrue(source.contains("openContentOverview(ContentOverviewType.NEW_AND_HOT_AUDIO)")) val functionSource = source.substringFrom("private fun openContentOverview(type: ContentOverviewType)") - assertTrue(functionSource.contains("ensureMainV2NavigationAllowed")) + assertTrue(functionSource.contains("ensureV2Access")) assertTrue(functionSource.contains("startActivity(ContentOverviewActivity.newIntent(requireContext(), type))")) assertTrue( - functionSource.indexOf("ensureMainV2NavigationAllowed") < + functionSource.indexOf("ensureV2Access") < functionSource.indexOf("startActivity(") ) } diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainTitleBarActionSourceTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainTitleBarActionSourceTest.kt index aa97a3c0..923d8485 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainTitleBarActionSourceTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainTitleBarActionSourceTest.kt @@ -15,7 +15,7 @@ class ContentMainTitleBarActionSourceTest { assertTrue(source.contains("viewContentTitleBar.ivTitleBarCash.setOnClickListener")) assertTrue(source.contains("viewContentTitleBar.ivTitleBarSearch.setOnClickListener")) assertTrue(source.contains("viewContentTitleBar.ivTitleBarStorage.setOnClickListener")) - assertTrue(source.contains("ensureMainV2NavigationAllowed")) + assertTrue(source.contains("ensureV2Access")) assertTrue(source.contains("CanChargeActivity::class.java")) assertTrue(source.contains("SearchActivity::class.java")) assertTrue(source.contains("AudioContentBoxActivity::class.java"))