콘텐츠 상세

- 소장만, 대여만 가능시 구매하기 버튼 배경색 변경
- 소장만, 대여만 가능시 구매하기 버튼을 터치하면 바로 구매확인 다이얼로그 표시
This commit is contained in:
klaus 2024-11-08 16:47:15 +09:00
parent 140f933db7
commit 6689932393
6 changed files with 63 additions and 50 deletions

View File

@ -30,6 +30,7 @@ import com.bumptech.glide.request.RequestOptions
import com.google.gson.Gson import com.google.gson.Gson
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService
import kr.co.vividnext.sodalive.audio_content.PurchaseOption
import kr.co.vividnext.sodalive.audio_content.comment.AudioContentCommentFragment import kr.co.vividnext.sodalive.audio_content.comment.AudioContentCommentFragment
import kr.co.vividnext.sodalive.audio_content.modify.AudioContentModifyActivity import kr.co.vividnext.sodalive.audio_content.modify.AudioContentModifyActivity
import kr.co.vividnext.sodalive.audio_content.order.AudioContentOrderConfirmDialog import kr.co.vividnext.sodalive.audio_content.order.AudioContentOrderConfirmDialog
@ -585,27 +586,39 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
"캔으로" "캔으로"
} }
binding.tvStrPurchaseOrRental.text = if (response.isOnlyRental) { when (response.purchaseOption) {
" 대여하기" PurchaseOption.BOTH -> {
} else { binding.tvStrPurchaseOrRental.text = " 구매하기"
" 구매하기" binding.llPurchase.setBackgroundResource(
R.drawable.bg_round_corner_5_3_3bb9f1
)
}
PurchaseOption.BUY_ONLY -> {
binding.tvStrPurchaseOrRental.text = " 소장하기"
binding.llPurchase.setBackgroundResource(
R.drawable.bg_round_corner_5_3_59548f
)
}
PurchaseOption.RENT_ONLY -> {
binding.tvStrPurchaseOrRental.text = " 대여하기"
binding.llPurchase.setBackgroundResource(
R.drawable.bg_round_corner_5_3_548f7d
)
}
} }
val limitedEdition = response.totalContentCount != null &&
response.remainingContentCount != null
binding.llPurchase.setOnClickListener { binding.llPurchase.setOnClickListener {
if ( if (limitedEdition || response.purchaseOption == PurchaseOption.BUY_ONLY) {
response.totalContentCount != null && showOrderConfirmDialog(audioContent = response, OrderType.KEEP)
response.remainingContentCount != null } else if (response.purchaseOption == PurchaseOption.RENT_ONLY) {
) { showOrderConfirmDialog(audioContent = response, OrderType.RENTAL)
showOrderConfirmDialog(
audioContent = response,
isOnlyRental = false,
OrderType.KEEP
)
} else { } else {
showOrderDialog( showOrderDialog(audioContent = response)
audioContent = response,
isOnlyRental = response.isOnlyRental
)
} }
} }
} }
@ -895,15 +908,11 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
} }
} }
private fun showOrderDialog( private fun showOrderDialog(audioContent: GetAudioContentDetailResponse) {
audioContent: GetAudioContentDetailResponse,
isOnlyRental: Boolean = false
) {
val dialog = AudioContentOrderFragment( val dialog = AudioContentOrderFragment(
price = audioContent.price, price = audioContent.price,
isOnlyRental = isOnlyRental, onClickKeep = { showOrderConfirmDialog(audioContent, OrderType.KEEP) },
onClickKeep = { showOrderConfirmDialog(audioContent, isOnlyRental, OrderType.KEEP) }, onClickRental = { showOrderConfirmDialog(audioContent, OrderType.RENTAL) }
onClickRental = { showOrderConfirmDialog(audioContent, isOnlyRental, OrderType.RENTAL) }
) )
dialog.show( dialog.show(
@ -914,7 +923,6 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
private fun showOrderConfirmDialog( private fun showOrderConfirmDialog(
audioContent: GetAudioContentDetailResponse, audioContent: GetAudioContentDetailResponse,
isOnlyRental: Boolean = false,
orderType: OrderType orderType: OrderType
) { ) {
AudioContentOrderConfirmDialog( AudioContentOrderConfirmDialog(
@ -926,7 +934,6 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
profileImageUrl = audioContent.creator.profileImageUrl, profileImageUrl = audioContent.creator.profileImageUrl,
nickname = audioContent.creator.nickname, nickname = audioContent.creator.nickname,
duration = audioContent.duration, duration = audioContent.duration,
isOnlyRental = isOnlyRental,
orderType = orderType, orderType = orderType,
price = audioContent.price, price = audioContent.price,
confirmButtonClick = { confirmButtonClick = {

View File

@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.audio_content.detail
import androidx.annotation.Keep import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName import com.google.gson.annotations.SerializedName
import kr.co.vividnext.sodalive.audio_content.PurchaseOption
import kr.co.vividnext.sodalive.audio_content.comment.GetAudioContentCommentListItem import kr.co.vividnext.sodalive.audio_content.comment.GetAudioContentCommentListItem
import kr.co.vividnext.sodalive.audio_content.order.OrderType import kr.co.vividnext.sodalive.audio_content.order.OrderType
@ -23,8 +24,8 @@ data class GetAudioContentDetailResponse(
@SerializedName("isActivePreview") val isActivePreview: Boolean, @SerializedName("isActivePreview") val isActivePreview: Boolean,
@SerializedName("isAdult") val isAdult: Boolean, @SerializedName("isAdult") val isAdult: Boolean,
@SerializedName("isMosaic") val isMosaic: Boolean, @SerializedName("isMosaic") val isMosaic: Boolean,
@SerializedName("isOnlyRental") val isOnlyRental: Boolean,
@SerializedName("existOrdered") val existOrdered: Boolean, @SerializedName("existOrdered") val existOrdered: Boolean,
@SerializedName("purchaseOption") val purchaseOption: PurchaseOption,
@SerializedName("orderType") val orderType: OrderType?, @SerializedName("orderType") val orderType: OrderType?,
@SerializedName("remainingTime") val remainingTime: String?, @SerializedName("remainingTime") val remainingTime: String?,
@SerializedName("creatorOtherContentList") @SerializedName("creatorOtherContentList")

View File

@ -26,7 +26,6 @@ class AudioContentOrderConfirmDialog(
profileImageUrl: String, profileImageUrl: String,
nickname: String, nickname: String,
duration: String, duration: String,
isOnlyRental: Boolean,
orderType: OrderType, orderType: OrderType,
price: Int, price: Int,
confirmButtonClick: () -> Unit, confirmButtonClick: () -> Unit,
@ -64,14 +63,14 @@ class AudioContentOrderConfirmDialog(
if (SharedPreferenceManager.userId == 17958L) { if (SharedPreferenceManager.userId == 17958L) {
dialogView.ivCan.visibility = View.GONE dialogView.ivCan.visibility = View.GONE
dialogView.tvPrice.text = if (orderType == OrderType.RENTAL && !isOnlyRental) { dialogView.tvPrice.text = if (orderType == OrderType.RENTAL) {
"${(ceil(price * 0.7).toInt() * 110).moneyFormat()}" "${(ceil(price * 0.7).toInt() * 110).moneyFormat()}"
} else { } else {
"${(price * 110).moneyFormat()}" "${(price * 110).moneyFormat()}"
} }
} else { } else {
dialogView.ivCan.visibility = View.VISIBLE dialogView.ivCan.visibility = View.VISIBLE
dialogView.tvPrice.text = if (orderType == OrderType.RENTAL && !isOnlyRental) { dialogView.tvPrice.text = if (orderType == OrderType.RENTAL) {
ceil(price * 0.7).toInt().moneyFormat() ceil(price * 0.7).toInt().moneyFormat()
} else { } else {
price.moneyFormat() price.moneyFormat()

View File

@ -13,7 +13,6 @@ import kotlin.math.ceil
class AudioContentOrderFragment( class AudioContentOrderFragment(
private val price: Int, private val price: Int,
private val isOnlyRental: Boolean,
private val onClickRental: () -> Unit, private val onClickRental: () -> Unit,
private val onClickKeep: () -> Unit private val onClickKeep: () -> Unit
) : BottomSheetDialogFragment() { ) : BottomSheetDialogFragment() {
@ -43,27 +42,18 @@ class AudioContentOrderFragment(
binding.ivRentalCan.visibility = View.VISIBLE binding.ivRentalCan.visibility = View.VISIBLE
} }
if (isOnlyRental) { if (SharedPreferenceManager.userId == 17958L) {
if (SharedPreferenceManager.userId == 17958L) { binding.tvKeep.text = "${(price * 110).moneyFormat()}"
binding.tvRental.text = "${(price * 110).moneyFormat()}" binding.tvRental.text = "${(ceil(price * 0.7).toInt() * 110).moneyFormat()}"
} else {
binding.tvRental.text = price.moneyFormat()
}
binding.rlKeep.visibility = View.GONE
} else { } else {
if (SharedPreferenceManager.userId == 17958L) { binding.tvKeep.text = price.moneyFormat()
binding.tvKeep.text = "${(price * 110).moneyFormat()}" binding.tvRental.text = ceil(price * 0.7).toInt().moneyFormat()
binding.tvRental.text = "${(ceil(price * 0.7).toInt() * 110).moneyFormat()}" }
} else {
binding.tvKeep.text = price.moneyFormat()
binding.tvRental.text = ceil(price * 0.7).toInt().moneyFormat()
}
binding.rlKeep.visibility = View.VISIBLE binding.rlKeep.visibility = View.VISIBLE
binding.llKeep.setOnClickListener { binding.llKeep.setOnClickListener {
onClickKeep() onClickKeep()
dismiss() dismiss()
}
} }
binding.llRental.setOnClickListener { binding.llRental.setOnClickListener {

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/color_548f7d" />
<corners android:radius="5.3dp" />
<stroke
android:width="1dp"
android:color="@color/color_548f7d" />
</shape>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/color_59548f" />
<corners android:radius="5.3dp" />
<stroke
android:width="1dp"
android:color="@color/color_59548f" />
</shape>