refactor(creator-channel): 후원 카드 바인딩을 공통화한다
This commit is contained in:
@@ -8,15 +8,12 @@ import android.view.ViewGroup
|
|||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import coil.transform.CircleCropTransformation
|
|
||||||
import kr.co.vividnext.sodalive.R
|
|
||||||
import kr.co.vividnext.sodalive.databinding.ItemCreatorChannelDonationBinding
|
import kr.co.vividnext.sodalive.databinding.ItemCreatorChannelDonationBinding
|
||||||
import kr.co.vividnext.sodalive.databinding.ItemCreatorChannelDonationEmptyBinding
|
import kr.co.vividnext.sodalive.databinding.ItemCreatorChannelDonationEmptyBinding
|
||||||
import kr.co.vividnext.sodalive.databinding.ItemCreatorChannelDonationRankingBinding
|
import kr.co.vividnext.sodalive.databinding.ItemCreatorChannelDonationRankingBinding
|
||||||
import kr.co.vividnext.sodalive.extensions.loadUrl
|
|
||||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.donation.model.CreatorChannelDonationRankingUiModel
|
import kr.co.vividnext.sodalive.v2.creator.channel.donation.model.CreatorChannelDonationRankingUiModel
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.donation.model.CreatorChannelDonationUiModel
|
import kr.co.vividnext.sodalive.v2.creator.channel.donation.model.CreatorChannelDonationUiModel
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.ui.bindCreatorChannelDonationCard
|
||||||
|
|
||||||
class CreatorChannelDonationAdapter(
|
class CreatorChannelDonationAdapter(
|
||||||
private val onRankingAllClick: () -> Unit = { },
|
private val onRankingAllClick: () -> Unit = { },
|
||||||
@@ -119,27 +116,20 @@ class CreatorChannelDonationAdapter(
|
|||||||
) : RecyclerView.ViewHolder(binding.root) {
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
|
|
||||||
fun bind(item: CreatorChannelDonationUiModel) = with(binding) {
|
fun bind(item: CreatorChannelDonationUiModel) = with(binding) {
|
||||||
layoutCreatorChannelDonationHeader.setBackgroundColor(root.context.getColor(item.headerColorResId))
|
bindCreatorChannelDonationCard(
|
||||||
ivCreatorChannelDonationProfile.loadUrl(item.profileImageUrl) {
|
headerView = layoutCreatorChannelDonationHeader,
|
||||||
crossfade(true)
|
profileView = ivCreatorChannelDonationProfile,
|
||||||
placeholder(R.drawable.ic_placeholder_profile)
|
nicknameView = tvCreatorChannelDonationNickname,
|
||||||
error(R.drawable.ic_placeholder_profile)
|
createdAtView = tvCreatorChannelDonationCreatedAt,
|
||||||
transformations(CircleCropTransformation())
|
canView = tvCreatorChannelDonationCan,
|
||||||
}
|
messageView = tvCreatorChannelDonationMessage,
|
||||||
tvCreatorChannelDonationNickname.text = item.nickname
|
headerColorResId = item.headerColorResId,
|
||||||
tvCreatorChannelDonationCreatedAt.text = item.createdAtText
|
profileImageUrl = item.profileImageUrl,
|
||||||
tvCreatorChannelDonationCan.text = root.context.getString(
|
nickname = item.nickname,
|
||||||
R.string.creator_channel_donation_can_format,
|
createdAtText = item.createdAtText,
|
||||||
item.can.moneyFormat()
|
can = item.can,
|
||||||
|
message = item.message
|
||||||
)
|
)
|
||||||
tvCreatorChannelDonationMessage.text = item.message
|
|
||||||
if (item.headerColorResId == R.color.red_400) {
|
|
||||||
tvCreatorChannelDonationNickname.setTextColor(root.context.getColor(R.color.white))
|
|
||||||
tvCreatorChannelDonationCreatedAt.setTextColor(root.context.getColor(R.color.gray_100))
|
|
||||||
} else {
|
|
||||||
tvCreatorChannelDonationNickname.setTextColor(root.context.getColor(R.color.black))
|
|
||||||
tvCreatorChannelDonationCreatedAt.setTextColor(root.context.getColor(R.color.gray_700))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package kr.co.vividnext.sodalive.v2.creator.channel.ui
|
||||||
|
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.ImageView
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.annotation.ColorRes
|
||||||
|
import coil.transform.CircleCropTransformation
|
||||||
|
import kr.co.vividnext.sodalive.R
|
||||||
|
import kr.co.vividnext.sodalive.extensions.loadUrl
|
||||||
|
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||||
|
|
||||||
|
internal fun bindCreatorChannelDonationCard(
|
||||||
|
headerView: View,
|
||||||
|
profileView: ImageView,
|
||||||
|
nicknameView: TextView,
|
||||||
|
createdAtView: TextView,
|
||||||
|
canView: TextView,
|
||||||
|
messageView: TextView,
|
||||||
|
@ColorRes headerColorResId: Int,
|
||||||
|
profileImageUrl: String,
|
||||||
|
nickname: String,
|
||||||
|
createdAtText: String,
|
||||||
|
can: Int,
|
||||||
|
message: String
|
||||||
|
) {
|
||||||
|
val context = headerView.context
|
||||||
|
headerView.setBackgroundColor(context.getColor(headerColorResId))
|
||||||
|
profileView.loadUrl(profileImageUrl) {
|
||||||
|
crossfade(true)
|
||||||
|
placeholder(R.drawable.ic_placeholder_profile)
|
||||||
|
error(R.drawable.ic_placeholder_profile)
|
||||||
|
transformations(CircleCropTransformation())
|
||||||
|
}
|
||||||
|
nicknameView.text = nickname
|
||||||
|
createdAtView.text = createdAtText
|
||||||
|
canView.text = context.getString(R.string.creator_channel_donation_can_format, can.moneyFormat())
|
||||||
|
messageView.text = message
|
||||||
|
if (headerColorResId == R.color.red_400) {
|
||||||
|
nicknameView.setTextColor(context.getColor(R.color.white))
|
||||||
|
createdAtView.setTextColor(context.getColor(R.color.gray_100))
|
||||||
|
} else {
|
||||||
|
nicknameView.setTextColor(context.getColor(R.color.black))
|
||||||
|
createdAtView.setTextColor(context.getColor(R.color.gray_700))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,12 +15,11 @@ import androidx.core.net.toUri
|
|||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import kr.co.vividnext.sodalive.R
|
|
||||||
import coil.transform.CircleCropTransformation
|
import coil.transform.CircleCropTransformation
|
||||||
|
import kr.co.vividnext.sodalive.R
|
||||||
import kr.co.vividnext.sodalive.common.formatUtcRelativeTimeText
|
import kr.co.vividnext.sodalive.common.formatUtcRelativeTimeText
|
||||||
import kr.co.vividnext.sodalive.common.image.BlurTransformation
|
import kr.co.vividnext.sodalive.common.image.BlurTransformation
|
||||||
import kr.co.vividnext.sodalive.extensions.loadUrl
|
import kr.co.vividnext.sodalive.extensions.loadUrl
|
||||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelAudioContentResponse
|
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelAudioContentResponse
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelCommunityPostResponse
|
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelCommunityPostResponse
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelLiveResponse
|
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelLiveResponse
|
||||||
@@ -196,30 +195,23 @@ class CreatorChannelHomeSectionAdapter(
|
|||||||
marginEnd = if (index == visibleDonations.lastIndex) 0 else 4.dp()
|
marginEnd = if (index == visibleDonations.lastIndex) 0 else 4.dp()
|
||||||
}
|
}
|
||||||
val headerColorResId = calculateCreatorChannelDonationHeaderColorRes(donation.can)
|
val headerColorResId = calculateCreatorChannelDonationHeaderColorRes(donation.can)
|
||||||
row.findViewById<View>(R.id.layout_donation_header)
|
val donationMessage = donation.message.ifBlank {
|
||||||
.setBackgroundColor(itemView.context.getColor(headerColorResId))
|
|
||||||
row.findViewById<ImageView>(R.id.iv_donation_profile).loadUrl(donation.profileImageUrl) {
|
|
||||||
placeholder(R.drawable.ic_placeholder_profile)
|
|
||||||
transformations(CircleCropTransformation())
|
|
||||||
}
|
|
||||||
val donationNickname = row.findViewById<TextView>(R.id.tv_donation_nickname)
|
|
||||||
val donationCreatedAt = row.findViewById<TextView>(R.id.tv_donation_created_at)
|
|
||||||
donationNickname.text = donation.nickname
|
|
||||||
donationCreatedAt.text = formatUtcRelativeTimeText(itemView.context, donation.createdAtUtc)
|
|
||||||
if (headerColorResId == R.color.red_400) {
|
|
||||||
donationNickname.setTextColor(itemView.context.getColor(R.color.white))
|
|
||||||
donationCreatedAt.setTextColor(itemView.context.getColor(R.color.gray_100))
|
|
||||||
} else {
|
|
||||||
donationNickname.setTextColor(itemView.context.getColor(R.color.black))
|
|
||||||
donationCreatedAt.setTextColor(itemView.context.getColor(R.color.gray_700))
|
|
||||||
}
|
|
||||||
row.findViewById<TextView>(R.id.tv_donation_can).text = itemView.context.getString(
|
|
||||||
R.string.creator_channel_donation_can_format,
|
|
||||||
donation.can.moneyFormat()
|
|
||||||
)
|
|
||||||
row.findViewById<TextView>(R.id.tv_donation_message).text = donation.message.ifBlank {
|
|
||||||
itemView.context.getString(R.string.creator_channel_donation_fallback_message, donation.can)
|
itemView.context.getString(R.string.creator_channel_donation_fallback_message, donation.can)
|
||||||
}
|
}
|
||||||
|
bindCreatorChannelDonationCard(
|
||||||
|
headerView = row.findViewById(R.id.layout_donation_header),
|
||||||
|
profileView = row.findViewById(R.id.iv_donation_profile),
|
||||||
|
nicknameView = row.findViewById(R.id.tv_donation_nickname),
|
||||||
|
createdAtView = row.findViewById(R.id.tv_donation_created_at),
|
||||||
|
canView = row.findViewById(R.id.tv_donation_can),
|
||||||
|
messageView = row.findViewById(R.id.tv_donation_message),
|
||||||
|
headerColorResId = headerColorResId,
|
||||||
|
profileImageUrl = donation.profileImageUrl,
|
||||||
|
nickname = donation.nickname,
|
||||||
|
createdAtText = formatUtcRelativeTimeText(itemView.context, donation.createdAtUtc),
|
||||||
|
can = donation.can,
|
||||||
|
message = donationMessage
|
||||||
|
)
|
||||||
donationItems?.addView(row)
|
donationItems?.addView(row)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user