From 8371dc7baf3852e98ec19017cbb69cc2c8c14815 Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 5 Jun 2026 20:53:44 +0900 Subject: [PATCH] =?UTF-8?q?feat(home):=20=EC=B6=94=EC=B2=9C=20UI=20?= =?UTF-8?q?=EB=B0=94=EC=9D=B8=EB=94=A9=EC=9D=84=20=EA=B0=B1=EC=8B=A0?= =?UTF-8?q?=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/v2/main/HomeMainFragment.kt | 2 +- .../v2/main/home/ui/HomeBannerBinder.kt | 33 +++++++++++-------- .../main/home/ui/HomeCheerCreatorAdapter.kt | 2 +- .../v2/main/home/ui/HomeFirstAudioAdapter.kt | 2 +- .../main/home/ui/HomeGenreCreatorAdapter.kt | 2 +- .../v2/main/home/ui/HomeLiveAdapter.kt | 12 +++---- .../ui/HomeRecentActivityCreatorAdapter.kt | 4 +-- 7 files changed, 32 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/HomeMainFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/HomeMainFragment.kt index 43619a8f..05dd42aa 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/HomeMainFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/HomeMainFragment.kt @@ -50,7 +50,7 @@ class HomeMainFragment : BaseFragment( private val homeRecommendationViewModel: HomeRecommendationViewModel by viewModel() private val loadingDialog: LoadingDialog by lazy { LoadingDialog(requireActivity(), layoutInflater) } private val liveAdapter = HomeLiveAdapter() - private val recentActivityCreatorAdapter = HomeRecentActivityCreatorAdapter { openCreatorProfile(it.creatorId) } + private val recentActivityCreatorAdapter = HomeRecentActivityCreatorAdapter() private val recentDebutCreatorAdapter = HomeRecentDebutCreatorAdapter { openCreatorProfile(it.creatorId) } private val firstAudioAdapter = HomeFirstAudioAdapter { openAudioContentDetail(it) } private val aiCharacterAdapter = HomeAiCharacterAdapter { openCharacterDetail(it.characterId) } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeBannerBinder.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeBannerBinder.kt index f5aecf11..3f697b03 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeBannerBinder.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeBannerBinder.kt @@ -9,14 +9,13 @@ import kr.co.vividnext.sodalive.v2.widget.banner.BannerView class HomeBannerBinder( private val bannerView: BannerView ) { - private var sourceItems: List = emptyList() private var onBannerClick: ((HomeRecommendationBannerUiModel) -> Unit)? = null init { - bannerView.setOnBindBannerImage { imageView, item -> imageView.loadUrl(item.imageUrl) } - bannerView.setOnBannerClickListener { bannerItem -> - sourceItems.firstOrNull { it.bannerId == bannerItem.bannerId }?.let { onBannerClick?.invoke(it) } + bannerView.setOnBindBannerImage { imageView, item -> + if (item.imageUrl.isBlank()) imageView.setImageDrawable(null) else imageView.loadUrl(item.imageUrl) } + bannerView.setOnBannerClickListener { item -> onBannerClick?.invoke(item.toHomeBannerUiModel()) } } fun setOnBannerClick(listener: ((HomeRecommendationBannerUiModel) -> Unit)?) { @@ -24,14 +23,22 @@ class HomeBannerBinder( } fun bind(section: HomeRecommendationBannerSection) { - sourceItems = section.items - bannerView.setItems( - section.items.map { item -> - BannerItem( - bannerId = item.bannerId, - imageUrl = item.imageUrl.orEmpty() - ) - } - ) + bannerView.setItems(section.items.map { it.toBannerItem() }) } + + private fun HomeRecommendationBannerUiModel.toBannerItem(): BannerItem = BannerItem( + imageUrl = imageUrl, + eventItem = eventItem, + creatorId = creatorId, + seriesId = seriesId, + link = link + ) + + private fun BannerItem.toHomeBannerUiModel(): HomeRecommendationBannerUiModel = HomeRecommendationBannerUiModel( + imageUrl = imageUrl, + eventItem = eventItem, + creatorId = creatorId, + seriesId = seriesId, + link = link + ) } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeCheerCreatorAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeCheerCreatorAdapter.kt index d91bc774..dfdf1b11 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeCheerCreatorAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeCheerCreatorAdapter.kt @@ -112,7 +112,7 @@ class HomeCheerCreatorAdapter( } } profileView.findViewById(R.id.iv_home_genre_creator_profile).apply { - if (creator.profileImage == null) { + if (creator.profileImage.isBlank()) { setImageDrawable(null) } else { loadUrl(creator.profileImage) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeFirstAudioAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeFirstAudioAdapter.kt index 942ce1e5..7646aaf4 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeFirstAudioAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeFirstAudioAdapter.kt @@ -77,7 +77,7 @@ class HomeFirstAudioAdapter( imageView: ImageView, imageUrl: String? ) { - if (imageUrl == null) { + if (imageUrl.isNullOrBlank()) { imageView.setImageDrawable(null) } else { imageView.loadUrl(imageUrl) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeGenreCreatorAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeGenreCreatorAdapter.kt index e5588381..c6db9f3b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeGenreCreatorAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeGenreCreatorAdapter.kt @@ -110,7 +110,7 @@ class HomeGenreCreatorAdapter( } } profileView.findViewById(R.id.iv_home_genre_creator_profile).apply { - if (creator.profileImage == null) { + if (creator.profileImage.isBlank()) { setImageDrawable(null) } else { loadUrl(creator.profileImage) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeLiveAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeLiveAdapter.kt index 7345f6c9..19fbd441 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeLiveAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeLiveAdapter.kt @@ -81,15 +81,15 @@ class HomeLiveAdapter : RecyclerView.Adapter() { onClick: ((HomeRecommendationLiveUiModel) -> Unit)? ) { val thumbnailItem = LiveThumbnailItem( - liveId = item.liveId, - creatorId = item.creatorId, - imageUrl = item.imageUrl.orEmpty(), - title = item.title, + liveId = item.roomId, + creatorId = item.roomId, + imageUrl = item.creatorProfileImage, + title = "", creatorName = item.creatorNickname, - liveStartTimeText = item.beginDateTime.orEmpty() + liveStartTimeText = "" ) view.bind(thumbnailItem) - view.imageView().loadUrl(item.imageUrl) + view.imageView().loadUrl(item.creatorProfileImage) view.setOnLiveThumbnailClick(if (onClick == null) null else { _: LiveThumbnailItem -> onClick.invoke(item) }) } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeRecentActivityCreatorAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeRecentActivityCreatorAdapter.kt index bedeec77..dd5d13ca 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeRecentActivityCreatorAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeRecentActivityCreatorAdapter.kt @@ -49,8 +49,8 @@ class HomeRecentActivityCreatorAdapter( } ?: run { activityTypeText.visibility = View.GONE } - titleText.text = item.activityAt.orEmpty() - titleText.visibility = if (item.activityAt.isNullOrBlank()) View.GONE else View.VISIBLE + titleText.text = item.activityAt + titleText.visibility = if (item.activityAt.isBlank()) View.GONE else View.VISIBLE nicknameText.text = item.nickname itemView.setOnClickListener { onClickItem(item) } }