refactor(creator-channel): 후원 카드 바인딩을 공통화한다
This commit is contained in:
@@ -8,15 +8,12 @@ import android.view.ViewGroup
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
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.ItemCreatorChannelDonationEmptyBinding
|
||||
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.CreatorChannelDonationUiModel
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.ui.bindCreatorChannelDonationCard
|
||||
|
||||
class CreatorChannelDonationAdapter(
|
||||
private val onRankingAllClick: () -> Unit = { },
|
||||
@@ -119,27 +116,20 @@ class CreatorChannelDonationAdapter(
|
||||
) : RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
fun bind(item: CreatorChannelDonationUiModel) = with(binding) {
|
||||
layoutCreatorChannelDonationHeader.setBackgroundColor(root.context.getColor(item.headerColorResId))
|
||||
ivCreatorChannelDonationProfile.loadUrl(item.profileImageUrl) {
|
||||
crossfade(true)
|
||||
placeholder(R.drawable.ic_placeholder_profile)
|
||||
error(R.drawable.ic_placeholder_profile)
|
||||
transformations(CircleCropTransformation())
|
||||
}
|
||||
tvCreatorChannelDonationNickname.text = item.nickname
|
||||
tvCreatorChannelDonationCreatedAt.text = item.createdAtText
|
||||
tvCreatorChannelDonationCan.text = root.context.getString(
|
||||
R.string.creator_channel_donation_can_format,
|
||||
item.can.moneyFormat()
|
||||
bindCreatorChannelDonationCard(
|
||||
headerView = layoutCreatorChannelDonationHeader,
|
||||
profileView = ivCreatorChannelDonationProfile,
|
||||
nicknameView = tvCreatorChannelDonationNickname,
|
||||
createdAtView = tvCreatorChannelDonationCreatedAt,
|
||||
canView = tvCreatorChannelDonationCan,
|
||||
messageView = tvCreatorChannelDonationMessage,
|
||||
headerColorResId = item.headerColorResId,
|
||||
profileImageUrl = item.profileImageUrl,
|
||||
nickname = item.nickname,
|
||||
createdAtText = item.createdAtText,
|
||||
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.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import coil.transform.CircleCropTransformation
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.common.formatUtcRelativeTimeText
|
||||
import kr.co.vividnext.sodalive.common.image.BlurTransformation
|
||||
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.CreatorChannelCommunityPostResponse
|
||||
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()
|
||||
}
|
||||
val headerColorResId = calculateCreatorChannelDonationHeaderColorRes(donation.can)
|
||||
row.findViewById<View>(R.id.layout_donation_header)
|
||||
.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 {
|
||||
val donationMessage = donation.message.ifBlank {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user