修复 房间 "夺宝精灵" 购买弹窗bug

This commit is contained in:
wzq
2023-10-11 10:53:58 +08:00
parent c85065d86c
commit 4e0a55ae46
4 changed files with 52 additions and 41 deletions

View File

@@ -98,6 +98,7 @@ class FairyViewModel : BaseViewModel() {
private val _buyDebrisLiveData = MutableLiveData<String?>()
val buyDebrisLiveData: LiveData<String?> = _buyDebrisLiveData
var firstBuyValue = true
init {
initPrizeInfoList()
@@ -553,6 +554,7 @@ class FairyViewModel : BaseViewModel() {
initDrawInfo()
_buyDebrisLiveData.value = result
firstBuyValue = false
}
)
}

View File

@@ -8,10 +8,7 @@ import android.content.pm.ActivityInfo
import android.graphics.Path
import android.os.Build
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.text.style.ForegroundColorSpan
import android.util.Log
import android.view.*
import android.widget.LinearLayout
import android.widget.TextView
@@ -30,6 +27,7 @@ import com.yizhuan.erban.treasure_box.activity.TreasureBoxActivity
import com.yizhuan.erban.treasurefairy.dialog.*
import com.yizhuan.erban.treasurefairy.view.CustomDrawable
import com.yizhuan.erban.ui.webview.FairyDialogWebViewActivity
import com.yizhuan.erban.utils.KeyBoardUtils
import com.yizhuan.erban.utils.SpannableBuilder
import com.yizhuan.xchat_android_core.UriProvider
import com.yizhuan.xchat_android_core.auth.AuthModel
@@ -70,8 +68,6 @@ class HomeFairyActivity : BaseViewBindingActivity<TreasureFairyDialogHomeBinding
private var isCheck = false
private var isSelect = false
private var mPrice = -1
companion object {
@@ -137,28 +133,26 @@ class HomeFairyActivity : BaseViewBindingActivity<TreasureFairyDialogHomeBinding
setFairyPriceSelect(0)
} catch (e: NumberFormatException) {
e.printStackTrace()
mPrice = -1
}
}
binding.tvBuy.setOnClickListener {
if (!isSelect) {
if (mPrice < 1) {
toast("請選擇購買的碎片數量")
return@setOnClickListener
}
val date = SPUtils.getLong(SpConstants.FAIRY_BUY_DEBRIS, 0L)
if (date != 0L) {
if (TimeUtils.isToday(date)) {
viewModel.buyDebris(
mPrice,
AuthModel.get().currentUid.toString()
)
} else {
FairyBuyDebrisDialog.newInstance(mPrice).show(context)
}
} else {
FairyBuyDebrisDialog.newInstance(mPrice).show(context)
if (TimeUtils.isToday(date)) {
viewModel.buyDebris(
mPrice,
AuthModel.get().currentUid.toString()
)
return@setOnClickListener
}
FairyBuyDebrisDialog.newInstance(mPrice).show(context)
}
binding.ivMyFairy.setOnClickListener {
@@ -292,20 +286,24 @@ class HomeFairyActivity : BaseViewBindingActivity<TreasureFairyDialogHomeBinding
}
private fun setFairyPriceSelect(pos: Int) {
isSelect = true
when (pos) {
0 -> {
binding.viewPrice1.isSelected = false
binding.viewPrice2.isSelected = false
binding.viewPrice3.isSelected = false
binding.ivDebris1.alpha = 0.4f
binding.ivDebris2.alpha = 0.4f
binding.ivDebris3.alpha = 0.4f
binding.tvOne.alpha = 0.4f
binding.tvTwo.alpha = 0.4f
binding.tvThree.alpha = 0.4f
}
if (pos == 0) {
binding.viewPrice1.isSelected = false
binding.viewPrice2.isSelected = false
binding.viewPrice3.isSelected = false
binding.ivDebris1.alpha = 0.4f
binding.ivDebris2.alpha = 0.4f
binding.ivDebris3.alpha = 0.4f
binding.tvOne.alpha = 0.4f
binding.tvTwo.alpha = 0.4f
binding.tvThree.alpha = 0.4f
return
}
binding.etQuantity.text = null
KeyBoardUtils.hideKeyBoard(this, binding.etQuantity)
binding.etQuantity.clearFocus()
when (pos) {
1 -> {
mPrice = 1
binding.viewPrice1.isSelected = true

View File

@@ -11,6 +11,7 @@ import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.TreasureFairyDialogBuyDebrisBinding
import com.yizhuan.erban.treasurefairy.FairyViewModel
import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_library.common.SpConstants
import com.yizhuan.xchat_android_library.common.util.SPUtils
import com.yizhuan.xchat_android_library.utils.TimeUtils
@@ -36,11 +37,14 @@ class FairyBuyDebrisDialog : BaseDialog<TreasureFairyDialogBuyDebrisBinding>() {
}
private val num by lazy { requireArguments().getInt("num") }
private val price by lazy { AvRoomDataManager.get().mSeizeTreasureSwitchVo?.price ?: 0 }
private var hadBreakFirstValue = false
@SuppressLint("CheckResult")
override fun init() {
binding.tvDebrisNum.text = getString(R.string.buy_debris, num)
binding.tvPrizeName.text = (num * 100).toString()
binding.tvPrizeName.text = (num * price).toString()
binding.cbPay.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
@@ -55,19 +59,20 @@ class FairyBuyDebrisDialog : BaseDialog<TreasureFairyDialogBuyDebrisBinding>() {
}
viewModel.buyDebrisLiveData.observe(this) {
val date = SPUtils.getLong(SpConstants.FAIRY_BUY_SUCCESS, 0L)
if (date != 0L) {
if (TimeUtils.isToday(date)) {
ToastUtils.show("購買碎片成功")
} else {
FairyBuySuccessDialog.newInstance(num).show(context)
}
} else {
FairyBuySuccessDialog.newInstance(num).show(context)
if (!viewModel.firstBuyValue && !hadBreakFirstValue) {
hadBreakFirstValue = true
return@observe
}
val date = SPUtils.getLong(SpConstants.FAIRY_BUY_SUCCESS, 0L)
if (TimeUtils.isToday(date)) {
ToastUtils.show("購買碎片成功")
return@observe
}
FairyBuySuccessDialog.newInstance(num).show(context)
dismissAllowingStateLoss()
}
}
}

View File

@@ -38,6 +38,7 @@ class FairyBuyDebrisModifyQuantityDialog :
private var num = 0
private val price by lazy { AvRoomDataManager.get().mSeizeTreasureSwitchVo?.price ?: 0 }
private var hadBreakFirstValue = false
@SuppressLint("CheckResult")
override fun init() {
@@ -63,6 +64,11 @@ class FairyBuyDebrisModifyQuantityDialog :
}
viewModel.buyDebrisLiveData.observe(this) {
if (!viewModel.firstBuyValue && !hadBreakFirstValue) {
hadBreakFirstValue = true
return@observe
}
val date = SPUtils.getLong(SpConstants.FAIRY_BUY_SUCCESS, 0L)
if (date != 0L) {
if (TimeUtils.isToday(date)) {