From 80e8213f12b0da5f3eb9e7f1cb0918d906e9aea8 Mon Sep 17 00:00:00 2001 From: klaus Date: Sat, 13 Jun 2026 16:21:46 +0900 Subject: [PATCH] =?UTF-8?q?refactor(home):=20=EC=B6=94=EC=B2=9C=20?= =?UTF-8?q?=ED=99=9C=EB=8F=99=20=ED=83=80=EC=9E=85=EC=9D=84=20=EA=B3=B5?= =?UTF-8?q?=EC=9A=A9=20=ED=83=80=EC=9E=85=EC=9C=BC=EB=A1=9C=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/model/HomeRecommendationMappers.kt | 9 +++++---- .../home/model/HomeRecommendationUiModels.kt | 11 ++++++----- .../main/home/model/RecommendedActivityType.kt | 18 ------------------ ... => HomeCreatorActivityTypeLabelResTest.kt} | 18 +++++++++--------- .../v2/main/home/HomeMainFragmentLayoutTest.kt | 18 +++++++++--------- 5 files changed, 29 insertions(+), 45 deletions(-) delete mode 100644 app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/RecommendedActivityType.kt rename app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/{RecommendedActivityTypeTest.kt => HomeCreatorActivityTypeLabelResTest.kt} (68%) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationMappers.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationMappers.kt index eb762c20..f5038551 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationMappers.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationMappers.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.v2.main.home.model import androidx.annotation.StringRes +import kr.co.vividnext.sodalive.v2.common.CreatorActivityType import kr.co.vividnext.sodalive.v2.main.home.data.HomeActiveCreatorItem import kr.co.vividnext.sodalive.v2.main.home.data.HomeAiCharacterItem import kr.co.vividnext.sodalive.v2.main.home.data.HomeBannerItem @@ -15,7 +16,7 @@ import kr.co.vividnext.sodalive.v2.widget.characterchatthumbnail.CharacterChatTh import kr.co.vividnext.sodalive.v2.widget.feed.FeedItem @StringRes -fun String.toRecommendedActivityTypeLabelRes(): Int? = RecommendedActivityType.from(this)?.labelResId +fun String.toCreatorActivityTypeLabelRes(): Int? = CreatorActivityType.from(this)?.labelResId fun HomeRecommendationResponse.toContent(): HomeRecommendationUiState.Content = HomeRecommendationUiState.Content( lives = HomeRecommendationLiveSection(lives.map { it.toUiModel() }), @@ -44,12 +45,12 @@ fun HomeBannerItem.toUiModel(): HomeRecommendationBannerUiModel = HomeRecommenda ) fun HomeActiveCreatorItem.toUiModel(): HomeRecommendationRecentlyActiveCreatorUiModel { - val recommendedActivityType = RecommendedActivityType.from(activityType) + val creatorActivityType = CreatorActivityType.from(activityType) return HomeRecommendationRecentlyActiveCreatorUiModel( nickname = creatorNickname, profileImage = creatorProfileImage, - activityType = recommendedActivityType, - activityLabelResId = recommendedActivityType?.labelResId, + activityType = creatorActivityType, + activityLabelResId = creatorActivityType?.labelResId, activityAt = activityAt, targetId = targetId ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationUiModels.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationUiModels.kt index 07e887c8..f54127b5 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationUiModels.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationUiModels.kt @@ -11,6 +11,7 @@ import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity import kr.co.vividnext.sodalive.explorer.profile.creator_community.all.CreatorCommunityAllActivity import kr.co.vividnext.sodalive.settings.event.EventDetailActivity import kr.co.vividnext.sodalive.settings.event.EventItem +import kr.co.vividnext.sodalive.v2.common.CreatorActivityType import kr.co.vividnext.sodalive.v2.widget.AudioContentTag import kr.co.vividnext.sodalive.v2.widget.characterchatthumbnail.CharacterChatThumbnailItem import kr.co.vividnext.sodalive.v2.widget.feed.FeedItem @@ -133,7 +134,7 @@ private fun homeRecommendationAppLinkHost(): String = "${BuildConfig.APPSCHEME}. data class HomeRecommendationRecentlyActiveCreatorUiModel( val nickname: String, val profileImage: String, - val activityType: RecommendedActivityType?, + val activityType: CreatorActivityType?, val activityLabelResId: Int?, val activityAt: String, val targetId: Long? @@ -149,10 +150,10 @@ fun HomeRecommendationRecentlyActiveCreatorUiModel.toHomeRecommendationRecentlyA HomeRecommendationRecentlyActiveCreatorRoute? { val routeTargetId = targetId?.takeIf { it > 0 } ?: return null return when (activityType) { - RecommendedActivityType.Live -> null - RecommendedActivityType.LiveReplay, - RecommendedActivityType.Audio -> HomeRecommendationRecentlyActiveCreatorRoute.AudioContent(routeTargetId) - RecommendedActivityType.Community -> HomeRecommendationRecentlyActiveCreatorRoute.Community(routeTargetId) + CreatorActivityType.Live -> null + CreatorActivityType.LiveReplay, + CreatorActivityType.Audio -> HomeRecommendationRecentlyActiveCreatorRoute.AudioContent(routeTargetId) + CreatorActivityType.Community -> HomeRecommendationRecentlyActiveCreatorRoute.Community(routeTargetId) null -> null } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/RecommendedActivityType.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/RecommendedActivityType.kt deleted file mode 100644 index ce45f082..00000000 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/RecommendedActivityType.kt +++ /dev/null @@ -1,18 +0,0 @@ -package kr.co.vividnext.sodalive.v2.main.home.model - -import androidx.annotation.StringRes -import kr.co.vividnext.sodalive.R - -enum class RecommendedActivityType( - val code: String, - @StringRes val labelResId: Int -) { - Live("LIVE", R.string.home_recommendation_activity_live), - LiveReplay("LIVE_REPLAY", R.string.home_recommendation_activity_live), - Audio("AUDIO", R.string.home_recommendation_activity_audio), - Community("COMMUNITY", R.string.home_recommendation_activity_community); - - companion object { - fun from(code: String): RecommendedActivityType? = entries.firstOrNull { it.code.equals(code, ignoreCase = true) } - } -} diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/RecommendedActivityTypeTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeCreatorActivityTypeLabelResTest.kt similarity index 68% rename from app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/RecommendedActivityTypeTest.kt rename to app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeCreatorActivityTypeLabelResTest.kt index f2a9593d..294346ae 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/RecommendedActivityTypeTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeCreatorActivityTypeLabelResTest.kt @@ -1,17 +1,17 @@ package kr.co.vividnext.sodalive.v2.main.home import kr.co.vividnext.sodalive.R -import kr.co.vividnext.sodalive.v2.main.home.model.toRecommendedActivityTypeLabelRes +import kr.co.vividnext.sodalive.v2.main.home.model.toCreatorActivityTypeLabelRes import org.junit.Assert.assertEquals import org.junit.Assert.assertNull import org.junit.Test -class RecommendedActivityTypeTest { +class HomeCreatorActivityTypeLabelResTest { @Test fun `LIVE maps to live label`() { assertEquals( R.string.home_recommendation_activity_live, - "LIVE".toRecommendedActivityTypeLabelRes() + "LIVE".toCreatorActivityTypeLabelRes() ) } @@ -19,7 +19,7 @@ class RecommendedActivityTypeTest { fun `LIVE_REPLAY maps to live label`() { assertEquals( R.string.home_recommendation_activity_live, - "LIVE_REPLAY".toRecommendedActivityTypeLabelRes() + "LIVE_REPLAY".toCreatorActivityTypeLabelRes() ) } @@ -27,7 +27,7 @@ class RecommendedActivityTypeTest { fun `AUDIO maps to audio label`() { assertEquals( R.string.home_recommendation_activity_audio, - "AUDIO".toRecommendedActivityTypeLabelRes() + "AUDIO".toCreatorActivityTypeLabelRes() ) } @@ -35,7 +35,7 @@ class RecommendedActivityTypeTest { fun `COMMUNITY maps to community label`() { assertEquals( R.string.home_recommendation_activity_community, - "COMMUNITY".toRecommendedActivityTypeLabelRes() + "COMMUNITY".toCreatorActivityTypeLabelRes() ) } @@ -43,7 +43,7 @@ class RecommendedActivityTypeTest { fun `lowercase activity type maps to matching label`() { assertEquals( R.string.home_recommendation_activity_live, - "live".toRecommendedActivityTypeLabelRes() + "live".toCreatorActivityTypeLabelRes() ) } @@ -51,12 +51,12 @@ class RecommendedActivityTypeTest { fun `mixed case activity type maps to matching label`() { assertEquals( R.string.home_recommendation_activity_live, - "Live_RePlay".toRecommendedActivityTypeLabelRes() + "Live_RePlay".toCreatorActivityTypeLabelRes() ) } @Test fun `unknown activity type maps to null`() { - assertNull("UNKNOWN".toRecommendedActivityTypeLabelRes()) + assertNull("UNKNOWN".toCreatorActivityTypeLabelRes()) } } diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt index 5262cce8..a3cbf6f2 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt @@ -50,7 +50,7 @@ import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationPopularComm import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationPaidStatus import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationRecentlyActiveCreatorRoute import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationRecentlyActiveCreatorUiModel -import kr.co.vividnext.sodalive.v2.main.home.model.RecommendedActivityType +import kr.co.vividnext.sodalive.v2.common.CreatorActivityType import kr.co.vividnext.sodalive.v2.main.home.model.toHomeRecommendationBannerIntent import kr.co.vividnext.sodalive.v2.main.home.model.toHomeRecommendationBannerRoute import kr.co.vividnext.sodalive.v2.main.home.model.toHomeRecommendationRecentlyActiveCreatorIntent @@ -1035,17 +1035,17 @@ class HomeMainFragmentLayoutTest { fun `home recent activity route maps activity type to target destination`() { assertEquals( HomeRecommendationRecentlyActiveCreatorRoute.AudioContent(11L), - recentActivityCreator(RecommendedActivityType.LiveReplay, targetId = 11L) + recentActivityCreator(CreatorActivityType.LiveReplay, targetId = 11L) .toHomeRecommendationRecentlyActiveCreatorRoute() ) assertEquals( HomeRecommendationRecentlyActiveCreatorRoute.AudioContent(12L), - recentActivityCreator(RecommendedActivityType.Audio, targetId = 12L) + recentActivityCreator(CreatorActivityType.Audio, targetId = 12L) .toHomeRecommendationRecentlyActiveCreatorRoute() ) assertEquals( HomeRecommendationRecentlyActiveCreatorRoute.Community(13L), - recentActivityCreator(RecommendedActivityType.Community, targetId = 13L) + recentActivityCreator(CreatorActivityType.Community, targetId = 13L) .toHomeRecommendationRecentlyActiveCreatorRoute() ) } @@ -1054,7 +1054,7 @@ class HomeMainFragmentLayoutTest { fun `home recent activity route ignores live unknown and missing target`() { assertEquals( null, - recentActivityCreator(RecommendedActivityType.Live, targetId = 10L) + recentActivityCreator(CreatorActivityType.Live, targetId = 10L) .toHomeRecommendationRecentlyActiveCreatorRoute() ) assertEquals( @@ -1063,12 +1063,12 @@ class HomeMainFragmentLayoutTest { ) assertEquals( null, - recentActivityCreator(RecommendedActivityType.Audio, targetId = null) + recentActivityCreator(CreatorActivityType.Audio, targetId = null) .toHomeRecommendationRecentlyActiveCreatorRoute() ) assertEquals( null, - recentActivityCreator(RecommendedActivityType.Community, targetId = 0L) + recentActivityCreator(CreatorActivityType.Community, targetId = 0L) .toHomeRecommendationRecentlyActiveCreatorRoute() ) } @@ -1406,7 +1406,7 @@ class HomeMainFragmentLayoutTest { val projectRoot = java.io.File("..").canonicalFile return java.io.File( projectRoot, - "app/src/main/java/kr/co/vividnext/sodalive/v2/main/HomeMainFragment.kt" + "app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt" ).readText() } @@ -1517,7 +1517,7 @@ class HomeMainFragmentLayoutTest { } private fun recentActivityCreator( - activityType: RecommendedActivityType?, + activityType: CreatorActivityType?, targetId: Long? ): HomeRecommendationRecentlyActiveCreatorUiModel { return HomeRecommendationRecentlyActiveCreatorUiModel(