修复 房间 "夺宝精灵" 购买弹窗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?>() private val _buyDebrisLiveData = MutableLiveData<String?>()
val buyDebrisLiveData: LiveData<String?> = _buyDebrisLiveData val buyDebrisLiveData: LiveData<String?> = _buyDebrisLiveData
var firstBuyValue = true
init { init {
initPrizeInfoList() initPrizeInfoList()
@@ -553,6 +554,7 @@ class FairyViewModel : BaseViewModel() {
initDrawInfo() initDrawInfo()
_buyDebrisLiveData.value = result _buyDebrisLiveData.value = result
firstBuyValue = false
} }
) )
} }

View File

@@ -8,10 +8,7 @@ import android.content.pm.ActivityInfo
import android.graphics.Path import android.graphics.Path
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.text.style.ForegroundColorSpan import android.text.style.ForegroundColorSpan
import android.util.Log
import android.view.* import android.view.*
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView 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.dialog.*
import com.yizhuan.erban.treasurefairy.view.CustomDrawable import com.yizhuan.erban.treasurefairy.view.CustomDrawable
import com.yizhuan.erban.ui.webview.FairyDialogWebViewActivity import com.yizhuan.erban.ui.webview.FairyDialogWebViewActivity
import com.yizhuan.erban.utils.KeyBoardUtils
import com.yizhuan.erban.utils.SpannableBuilder import com.yizhuan.erban.utils.SpannableBuilder
import com.yizhuan.xchat_android_core.UriProvider import com.yizhuan.xchat_android_core.UriProvider
import com.yizhuan.xchat_android_core.auth.AuthModel import com.yizhuan.xchat_android_core.auth.AuthModel
@@ -70,8 +68,6 @@ class HomeFairyActivity : BaseViewBindingActivity<TreasureFairyDialogHomeBinding
private var isCheck = false private var isCheck = false
private var isSelect = false
private var mPrice = -1 private var mPrice = -1
companion object { companion object {
@@ -137,28 +133,26 @@ class HomeFairyActivity : BaseViewBindingActivity<TreasureFairyDialogHomeBinding
setFairyPriceSelect(0) setFairyPriceSelect(0)
} catch (e: NumberFormatException) { } catch (e: NumberFormatException) {
e.printStackTrace() e.printStackTrace()
mPrice = -1
} }
} }
binding.tvBuy.setOnClickListener { binding.tvBuy.setOnClickListener {
if (!isSelect) { if (mPrice < 1) {
toast("請選擇購買的碎片數量") toast("請選擇購買的碎片數量")
return@setOnClickListener return@setOnClickListener
} }
val date = SPUtils.getLong(SpConstants.FAIRY_BUY_DEBRIS, 0L) val date = SPUtils.getLong(SpConstants.FAIRY_BUY_DEBRIS, 0L)
if (date != 0L) { if (TimeUtils.isToday(date)) {
if (TimeUtils.isToday(date)) { viewModel.buyDebris(
viewModel.buyDebris( mPrice,
mPrice, AuthModel.get().currentUid.toString()
AuthModel.get().currentUid.toString() )
) return@setOnClickListener
} else {
FairyBuyDebrisDialog.newInstance(mPrice).show(context)
}
} else {
FairyBuyDebrisDialog.newInstance(mPrice).show(context)
} }
FairyBuyDebrisDialog.newInstance(mPrice).show(context)
} }
binding.ivMyFairy.setOnClickListener { binding.ivMyFairy.setOnClickListener {
@@ -292,20 +286,24 @@ class HomeFairyActivity : BaseViewBindingActivity<TreasureFairyDialogHomeBinding
} }
private fun setFairyPriceSelect(pos: Int) { private fun setFairyPriceSelect(pos: Int) {
isSelect = true if (pos == 0) {
when (pos) { binding.viewPrice1.isSelected = false
0 -> { binding.viewPrice2.isSelected = false
binding.viewPrice1.isSelected = false binding.viewPrice3.isSelected = false
binding.viewPrice2.isSelected = false binding.ivDebris1.alpha = 0.4f
binding.viewPrice3.isSelected = false binding.ivDebris2.alpha = 0.4f
binding.ivDebris1.alpha = 0.4f binding.ivDebris3.alpha = 0.4f
binding.ivDebris2.alpha = 0.4f binding.tvOne.alpha = 0.4f
binding.ivDebris3.alpha = 0.4f binding.tvTwo.alpha = 0.4f
binding.tvOne.alpha = 0.4f binding.tvThree.alpha = 0.4f
binding.tvTwo.alpha = 0.4f return
binding.tvThree.alpha = 0.4f }
}
binding.etQuantity.text = null
KeyBoardUtils.hideKeyBoard(this, binding.etQuantity)
binding.etQuantity.clearFocus()
when (pos) {
1 -> { 1 -> {
mPrice = 1 mPrice = 1
binding.viewPrice1.isSelected = true 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.databinding.TreasureFairyDialogBuyDebrisBinding
import com.yizhuan.erban.treasurefairy.FairyViewModel import com.yizhuan.erban.treasurefairy.FairyViewModel
import com.yizhuan.xchat_android_core.auth.AuthModel 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.SpConstants
import com.yizhuan.xchat_android_library.common.util.SPUtils import com.yizhuan.xchat_android_library.common.util.SPUtils
import com.yizhuan.xchat_android_library.utils.TimeUtils 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 num by lazy { requireArguments().getInt("num") }
private val price by lazy { AvRoomDataManager.get().mSeizeTreasureSwitchVo?.price ?: 0 }
private var hadBreakFirstValue = false
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
override fun init() { override fun init() {
binding.tvDebrisNum.text = getString(R.string.buy_debris, num) 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 -> binding.cbPay.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) { if (isChecked) {
@@ -55,19 +59,20 @@ class FairyBuyDebrisDialog : BaseDialog<TreasureFairyDialogBuyDebrisBinding>() {
} }
viewModel.buyDebrisLiveData.observe(this) { viewModel.buyDebrisLiveData.observe(this) {
val date = SPUtils.getLong(SpConstants.FAIRY_BUY_SUCCESS, 0L) if (!viewModel.firstBuyValue && !hadBreakFirstValue) {
if (date != 0L) { hadBreakFirstValue = true
if (TimeUtils.isToday(date)) { return@observe
ToastUtils.show("購買碎片成功")
} else {
FairyBuySuccessDialog.newInstance(num).show(context)
}
} else {
FairyBuySuccessDialog.newInstance(num).show(context)
} }
val date = SPUtils.getLong(SpConstants.FAIRY_BUY_SUCCESS, 0L)
if (TimeUtils.isToday(date)) {
ToastUtils.show("購買碎片成功")
return@observe
}
FairyBuySuccessDialog.newInstance(num).show(context)
dismissAllowingStateLoss() dismissAllowingStateLoss()
} }
} }
} }

View File

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