feat(home): 추천 시간과 프로필 표시를 보완한다
This commit is contained in:
@@ -10,6 +10,7 @@ import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.chat.character.detail.CharacterDetailActivity
|
||||
import kr.co.vividnext.sodalive.common.Constants
|
||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||
import kr.co.vividnext.sodalive.common.formatUtcRelativeTimeText
|
||||
import kr.co.vividnext.sodalive.common.ToastMessage
|
||||
import kr.co.vividnext.sodalive.databinding.FragmentV2MainHomeBinding
|
||||
import kr.co.vividnext.sodalive.databinding.ViewSectionTitleBinding
|
||||
@@ -27,7 +28,9 @@ import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationGenreCreato
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationLiveSection
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationLiveUiModel
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationPopularCommunityPostSection
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationPopularCommunityPostUiModel
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationRecentlyActiveCreatorSection
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationRecentlyActiveCreatorUiModel
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationRecentDebutCreatorSection
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationUiState
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.visibleHomeGenreCreatorGroups
|
||||
@@ -179,7 +182,7 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
|
||||
private fun bindRecentActivitySection(section: HomeRecommendationRecentlyActiveCreatorSection) {
|
||||
binding.llHomeRecentActivitySection.visibility = section.items.toSectionVisibility()
|
||||
recentActivityCreatorAdapter.submitItems(section.items)
|
||||
recentActivityCreatorAdapter.submitItems(section.items.map { it.withRelativeActivityAt() })
|
||||
}
|
||||
|
||||
private fun bindRecentDebutSection(section: HomeRecommendationRecentDebutCreatorSection) {
|
||||
@@ -210,7 +213,23 @@ class HomeMainFragment : BaseFragment<FragmentV2MainHomeBinding>(
|
||||
|
||||
private fun bindPopularCommunitySection(section: HomeRecommendationPopularCommunityPostSection) {
|
||||
binding.llHomePopularCommunitySection.visibility = section.items.toSectionVisibility()
|
||||
popularCommunityAdapter.submitSection(section)
|
||||
popularCommunityAdapter.submitSection(
|
||||
HomeRecommendationPopularCommunityPostSection(section.items.map { it.withRelativeCreatedAt() })
|
||||
)
|
||||
}
|
||||
|
||||
private fun HomeRecommendationRecentlyActiveCreatorUiModel.withRelativeActivityAt():
|
||||
HomeRecommendationRecentlyActiveCreatorUiModel {
|
||||
return copy(activityAt = formatUtcRelativeTimeText(requireContext(), activityAt))
|
||||
}
|
||||
|
||||
private fun HomeRecommendationPopularCommunityPostUiModel.withRelativeCreatedAt():
|
||||
HomeRecommendationPopularCommunityPostUiModel {
|
||||
return copy(
|
||||
item = item.copy(
|
||||
createdAtText = formatUtcRelativeTimeText(requireContext(), item.createdAtText)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private fun setUpSectionTitles() {
|
||||
|
||||
@@ -8,7 +8,6 @@ import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.extensions.loadUrl
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationCreatorUiModel
|
||||
|
||||
class HomeCheerCreatorAdapter(
|
||||
@@ -111,13 +110,8 @@ class HomeCheerCreatorAdapter(
|
||||
topMargin = profileView.resources.getDimensionPixelSize(R.dimen.spacing_14)
|
||||
}
|
||||
}
|
||||
profileView.findViewById<ImageView>(R.id.iv_home_genre_creator_profile).apply {
|
||||
if (creator.profileImage.isBlank()) {
|
||||
setImageDrawable(null)
|
||||
} else {
|
||||
loadUrl(creator.profileImage)
|
||||
}
|
||||
}
|
||||
profileView.findViewById<ImageView>(R.id.iv_home_genre_creator_profile)
|
||||
.loadHomeCreatorProfileImage(creator.profileImage)
|
||||
profileView.findViewById<TextView>(R.id.tv_home_genre_creator_profile_nickname).text = creator.nickname
|
||||
profileView.setOnClickListener { onCreatorClick(creator) }
|
||||
creatorGrid.addView(profileView)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package kr.co.vividnext.sodalive.v2.main.home.ui
|
||||
|
||||
import android.widget.ImageView
|
||||
import coil.transform.CircleCropTransformation
|
||||
import coil.transform.Transformation
|
||||
import kr.co.vividnext.sodalive.extensions.loadUrl
|
||||
|
||||
fun homeCreatorProfileImageTransformations(): List<Transformation> = listOf(CircleCropTransformation())
|
||||
|
||||
fun ImageView.loadHomeCreatorProfileImage(url: String?) {
|
||||
if (url.isNullOrBlank()) {
|
||||
setImageDrawable(null)
|
||||
} else {
|
||||
loadUrl(url) {
|
||||
transformations(homeCreatorProfileImageTransformations())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,6 @@ import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.extensions.loadUrl
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationCreatorUiModel
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationGenreCreatorGroupUiModel
|
||||
|
||||
@@ -109,13 +108,8 @@ class HomeGenreCreatorAdapter(
|
||||
topMargin = profileView.resources.getDimensionPixelSize(R.dimen.spacing_14)
|
||||
}
|
||||
}
|
||||
profileView.findViewById<ImageView>(R.id.iv_home_genre_creator_profile).apply {
|
||||
if (creator.profileImage.isBlank()) {
|
||||
setImageDrawable(null)
|
||||
} else {
|
||||
loadUrl(creator.profileImage)
|
||||
}
|
||||
}
|
||||
profileView.findViewById<ImageView>(R.id.iv_home_genre_creator_profile)
|
||||
.loadHomeCreatorProfileImage(creator.profileImage)
|
||||
profileView.findViewById<TextView>(R.id.tv_home_genre_creator_profile_nickname).text = creator.nickname
|
||||
profileView.setOnClickListener { onCreatorClick(creator) }
|
||||
creatorGrid.addView(profileView)
|
||||
|
||||
@@ -7,7 +7,6 @@ import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.extensions.loadUrl
|
||||
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationRecentlyActiveCreatorUiModel
|
||||
|
||||
class HomeRecentActivityCreatorAdapter(
|
||||
@@ -42,7 +41,7 @@ class HomeRecentActivityCreatorAdapter(
|
||||
private val nicknameText = itemView.findViewById<TextView>(R.id.tv_home_recent_activity_nickname)
|
||||
|
||||
fun bind(item: HomeRecommendationRecentlyActiveCreatorUiModel) {
|
||||
profileImage.loadUrl(item.profileImage)
|
||||
profileImage.loadHomeCreatorProfileImage(item.profileImage)
|
||||
item.activityLabelResId?.let { labelResId ->
|
||||
activityTypeText.setText(labelResId)
|
||||
activityTypeText.visibility = View.VISIBLE
|
||||
|
||||
Reference in New Issue
Block a user