fix(home): 장르 크리에이터 섹션을 숨긴다
This commit is contained in:
@@ -41,7 +41,6 @@ import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationAiCharacter
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationBannerSection
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationBannerUiModel
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationCheerCreatorSection
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationGenreCreatorGroupUiModel
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationGenreCreatorSection
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationLiveSection
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationLiveUiModel
|
||||
@@ -57,7 +56,6 @@ import kr.co.vividnext.sodalive.v2.main.home.model.toHomeRecommendationAiCharact
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.toHomeRecommendationAiCharacterRoute
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.toHomeRecommendationRecentlyActiveCreatorIntent
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.toHomeRecommendationRecentlyActiveCreatorRoute
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.visibleHomeGenreCreatorGroups
|
||||
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeAiCharacterAdapter
|
||||
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeBannerBinder
|
||||
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeBusinessInfoBinder
|
||||
@@ -100,10 +98,7 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
private val recentActivityCreatorAdapter = HomeRecentActivityCreatorAdapter { onRecentActivityClick(it) }
|
||||
private val recentDebutCreatorAdapter = HomeRecentDebutCreatorAdapter { openCreatorProfile(it.creatorId) }
|
||||
private val aiCharacterAdapter = HomeAiCharacterAdapter { onAiCharacterClick(it) }
|
||||
private val genreCreatorAdapter = HomeGenreCreatorAdapter(
|
||||
onFollowAllClick = { creatorIds -> onGenreFollowAllClick(creatorIds) },
|
||||
onCreatorClick = { creator -> openCreatorProfile(creator.creatorId) }
|
||||
)
|
||||
private val genreCreatorAdapter = HomeGenreCreatorAdapter(onFollowAllClick = {})
|
||||
private val cheerCreatorAdapter = HomeCheerCreatorAdapter(
|
||||
onFollowAllClick = { creatorIds -> onCheerFollowAllClick(creatorIds) },
|
||||
onCreatorClick = { creator -> openCreatorProfile(creator.creatorId) }
|
||||
@@ -119,7 +114,6 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
private val followingScheduleAdapter = HomeFollowingScheduleAdapter { onFollowingScheduleClick(it) }
|
||||
private val followingNewsAdapter = HomeFollowingNewsAdapter { onFollowingNewsClick(it) }
|
||||
private var bannerBinder: HomeBannerBinder? = null
|
||||
private var onGenreFollowAllClick: (List<Long>) -> Unit = {}
|
||||
private var onCheerFollowAllClick: (List<Long>) -> Unit = {}
|
||||
private var hasLoadedCreatorRankings = false
|
||||
private var hasLoadedFollowing = false
|
||||
@@ -218,9 +212,6 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||
adapter = popularCommunityAdapter
|
||||
}
|
||||
onGenreFollowAllClick = { creatorIds ->
|
||||
homeRecommendationViewModel.followCreators(genreSectionKey(creatorIds), creatorIds)
|
||||
}
|
||||
onCheerFollowAllClick = { creatorIds ->
|
||||
homeRecommendationViewModel.followCreators(SECTION_KEY_CHEER_CREATORS, creatorIds)
|
||||
}
|
||||
@@ -458,9 +449,8 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
}
|
||||
|
||||
private fun bindGenreCreatorSection(section: HomeRecommendationGenreCreatorSection) {
|
||||
val visibleGroups = section.visibleHomeGenreCreatorGroups()
|
||||
binding.llHomeGenreCreatorSection.visibility = visibleGroups.toSectionVisibility()
|
||||
genreCreatorAdapter.submitGroups(visibleGroups)
|
||||
binding.llHomeGenreCreatorSection.visibility = View.GONE
|
||||
genreCreatorAdapter.submitGroups(emptyList())
|
||||
}
|
||||
|
||||
private fun bindCheerCreatorSection(section: HomeRecommendationCheerCreatorSection) {
|
||||
@@ -634,19 +624,6 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
?: toastMessage.resId?.let { resId -> showToast(getString(resId)) }
|
||||
}
|
||||
|
||||
private fun genreSectionKey(creatorIds: List<Long>): String {
|
||||
val group = currentVisibleGenreGroups().firstOrNull { group ->
|
||||
group.creators.map { it.creatorId } == creatorIds
|
||||
}
|
||||
return "$SECTION_KEY_GENRE_CREATORS:${group?.genre.orEmpty()}"
|
||||
}
|
||||
|
||||
private fun currentVisibleGenreGroups(): List<HomeRecommendationGenreCreatorGroupUiModel> {
|
||||
val content = homeRecommendationViewModel.recommendationStateLiveData.value as? HomeRecommendationUiState.Content
|
||||
?: return emptyList()
|
||||
return content.genreCreators.visibleHomeGenreCreatorGroups()
|
||||
}
|
||||
|
||||
private fun emptyHomeRecommendationContent(): HomeRecommendationUiState.Content {
|
||||
return HomeRecommendationUiState.Content(
|
||||
lives = HomeRecommendationLiveSection(emptyList()),
|
||||
@@ -667,7 +644,6 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
const val HOME_TAB_RANKING = 1
|
||||
const val HOME_TAB_FOLLOWING = 2
|
||||
const val SECTION_KEY_CHEER_CREATORS = "cheerCreators"
|
||||
const val SECTION_KEY_GENRE_CREATORS = "genreCreators"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-18
@@ -11,7 +11,6 @@ import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||
import kr.co.vividnext.sodalive.common.ToastMessage
|
||||
import kr.co.vividnext.sodalive.v2.main.home.data.FollowRecommendedCreatorsRequest
|
||||
import kr.co.vividnext.sodalive.v2.main.home.data.HomeRecommendationRepository
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationGenreCreatorSection
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationUiState
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.toContent
|
||||
|
||||
@@ -94,22 +93,10 @@ class HomeRecommendationViewModel(
|
||||
|
||||
private fun updateFollowCompleted(sectionKey: String) {
|
||||
val content = _recommendationStateLiveData.value as? HomeRecommendationUiState.Content ?: return
|
||||
_recommendationStateLiveData.value = when (sectionKey) {
|
||||
SECTION_KEY_CHEER_CREATORS -> content.copy(
|
||||
cheerCreators = content.cheerCreators.copy(isFollowCompleted = true)
|
||||
)
|
||||
else -> content.copy(
|
||||
genreCreators = HomeRecommendationGenreCreatorSection(
|
||||
groups = content.genreCreators.groups.map { group ->
|
||||
if (group.genre == sectionKey || sectionKey == "$SECTION_KEY_GENRE_CREATORS:${group.genre}") {
|
||||
group.copy(isFollowCompleted = true)
|
||||
} else {
|
||||
group
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
if (sectionKey != SECTION_KEY_CHEER_CREATORS) return
|
||||
_recommendationStateLiveData.value = content.copy(
|
||||
cheerCreators = content.cheerCreators.copy(isFollowCompleted = true)
|
||||
)
|
||||
}
|
||||
|
||||
private fun showUnknownError(message: String?) {
|
||||
@@ -121,6 +108,5 @@ class HomeRecommendationViewModel(
|
||||
|
||||
private companion object {
|
||||
const val SECTION_KEY_CHEER_CREATORS = "cheerCreators"
|
||||
const val SECTION_KEY_GENRE_CREATORS = "genreCreators"
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -19,7 +19,6 @@ sealed interface HomeRecommendationUiState {
|
||||
recentlyActiveCreators.items,
|
||||
recentDebutCreators.items,
|
||||
aiCharacters.items,
|
||||
genreCreators.groups,
|
||||
cheerCreators.items,
|
||||
popularCommunityPosts.items
|
||||
).all { it.isEmpty() }
|
||||
|
||||
@@ -141,7 +141,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/spacing_48"
|
||||
android:orientation="vertical">
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
<kr.co.vividnext.sodalive.v2.main.home.ui.HomePagerSnapRecyclerView
|
||||
android:id="@+id/rv_home_genre_creators"
|
||||
|
||||
Reference in New Issue
Block a user