feat:調整 VIP 顯示邏輯,移除公聊廳

This commit is contained in:
max
2024-08-28 13:55:12 +08:00
parent adf2adc173
commit e9ba0b1929
15 changed files with 93 additions and 205 deletions

View File

@@ -160,7 +160,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
protected lateinit var inputLayout: RelativeLayout
protected lateinit var inputEdit: EditText
protected lateinit var inputSend: ImageView
protected lateinit var inputHeadlineSend: ImageView
protected lateinit var microView: MicroView
private var musicPlayerView: MusicPlayerView? = null
private var mVsMusicPlayer: ViewStub? = null
@@ -202,8 +201,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
// 房间小组件
private var widgets: HashMap<String, RoomWidget> = HashMap()
private val headlineViewModel by activityViewModels<HeadlineViewModel>()
@CallSuper
override fun onFindViews() {
initMessageView()
@@ -219,7 +216,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
false
}
inputSend = mView.findViewById(R.id.input_send)
inputHeadlineSend = mView.findViewById(R.id.input_headline_send)
microView = mView.findViewById(R.id.micro_view)
mVsMusicPlayer = mView.findViewById(R.id.vs_music_player)
messageView.setClickConsumer {
@@ -252,7 +248,8 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
parent: ViewGroup,
viewType: Int
): RecyclerView.ViewHolder {
messageView.layoutParams = ViewGroup.LayoutParams(
val view = messageView
view.layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
@@ -306,7 +303,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
override fun onSetListener() {
bottomView.setMagicBtnEnable(true)
inputSend.setOnClickListener(this)
inputHeadlineSend.setOnClickListener(this)
inputLayout.setOnTouchListener { _: View?, _: MotionEvent? ->
inputEdit.clearFocus()
inputLayout.visibility = View.GONE
@@ -314,7 +310,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
false
}
messageView.setOnLongClickListener { _, account, name ->
showInputLayout()
if (atProxy == null) atProxy = AtProxy(inputEdit)
@@ -370,44 +365,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
//获取免费礼物详情
mvpPresenter?.queryFreeFlower()
initRoomAlbum()
initHeadline()
}
private fun initHeadline() {
headlineViewModel.loadingLiveData.observe(this) {
if (it) dialogManager?.showProgressDialog(context)
else dialogManager?.dismissDialog()
}
lifecycleScope.launch(Dispatchers.Main) {
headlineViewModel.sendHeadlineFlow.collect {
if (it.isSuccess) {
SingleToastUtil.showToast(R.string.sent_success)
inputEdit.setText("")
KeyBoardUtils.hideKeyBoard(activity, inputEdit)
} else {
if (it.code == BalanceNotEnoughExeption.code) {
showBalanceNotEnoughDialog()
} else {
SingleToastUtil.showToast(it.message)
}
}
}
}
headlineViewModel.getHeadlinePayMoneyIsNull()
}
private fun showBalanceNotEnoughDialog() {
val tipDialog = CommonTipDialog(context)
tipDialog.setTipMsg(ResUtil.getString(R.string.insufficient_balance_recharge_tips))
tipDialog.setOkText(getString(R.string.charge))
tipDialog.setOnActionListener(
object : CommonTipDialog.OnActionListener {
override fun onOk() {
ChargeActivity.start(context)
}
}
)
tipDialog.show()
}
@SuppressLint("CheckResult")
@@ -811,9 +768,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
R.id.input_send -> {
sendMsg()
}
R.id.input_headline_send -> {
sendHeadline()
}
R.id.layout_room_rank -> {
DialogWebViewActivity.start(mContext, UriProvider.getRoomRanking())
}
@@ -861,41 +815,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
}
}
private fun sendHeadline() {
val message = inputEdit.text.toString().trim()
if (TextUtils.isEmpty(message)) {
SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_fragment_baseroomfragment_08))
return
}
if (message.length > 100) {
toast(R.string.headline_input_length_limit_tips)
return
}
val money = headlineViewModel.headlinePayMoneyLiveData.value
if (money != null) {
showHeadlinePayDialog(money, message)
} else {
SingleToastUtil.showToast(R.string.ui_setting_modifypwdactivity_01)
headlineViewModel.getHeadlinePayMoney()
}
}
private fun showHeadlinePayDialog(money: Long, message: String) {
KeyBoardUtils.hideKeyBoard(activity, inputEdit)
SelectPayTypeDialog.newInstance(
money.toString(),
money,
false
).apply {
setOnDiamondChargeClick {
headlineViewModel.sendHeadline(message)
}
setOnChargeClick {
ChargeActivity.start(context)
}
}.show(context)
}
@SuppressLint("CheckResult")
fun sendMsg(msg: String) {
if (!AuthModel.get().isImLogin) {
@@ -1549,7 +1468,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
* 打开公屏输入
*/
fun openMessageInput(text: String?) {
inputHeadlineSend.isVisible = isPublicMessageTab()
inputLayout.visibility = View.VISIBLE
if (text != null) {
inputEdit.setText(text)

View File

@@ -11,6 +11,7 @@ import com.chwl.app.databinding.ItemMyUserCardWearBinding;
import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.core.decoration.headwear.bean.HeadWearInfo;
import com.chwl.core.decoration.headwear.bean.UserCardWearInfo;
import com.chwl.library.download.DownloadException;
import com.chwl.library.download.DownloadManager;
import com.chwl.library.download.DownloadRequest;
import com.chwl.library.download.DownloadTask;
@@ -34,8 +35,7 @@ public class MyUserCardWearAdapter extends BaseAdapter<UserCardWearInfo> {
protected void convert(@NonNull BindingViewHolder helper, UserCardWearInfo item) {
super.convert(helper, item);
ItemMyUserCardWearBinding binding = (ItemMyUserCardWearBinding) helper.getBinding();
ImageLoadUtils.loadImage(mContext, item.getPic(), binding.ivUserCardWear);
binding.ivUserCardWearMp4.setLoop(Integer.MAX_VALUE);
String filePath = PathHelper.INSTANCE.generateResourcesFilePath(item.getPic());
DownloadRequest request = DownloadRequest.Companion.build(item.getPic(), filePath, "gift_effect_download", null, 60000L);
@@ -45,6 +45,11 @@ public class MyUserCardWearAdapter extends BaseAdapter<UserCardWearInfo> {
String path = task.getRequest().getPath();
binding.ivUserCardWearMp4.startPlay(new File(path));
}
@Override
public void onDownloadError(@NonNull DownloadException exception) {
ImageLoadUtils.loadImage(mContext, item.getPic(), binding.ivUserCardWear);
}
});

View File

@@ -93,18 +93,18 @@ public class MyUserCardWearFragment extends BaseBindingFragment<FrgMyDecorationC
String cardId = headWearInfo.isUsed() ? null : headWearInfo.getCardId();
wearVm.userHeadWear(cardId)
.compose(bindUntilEvent(FragmentEvent.DESTROY))
.doOnError(throwable -> {
toast(throwable.getMessage());
})
.subscribe(s -> {
for (int i = 0; i < shopAdapter.getData().size(); i++) {
shopAdapter.getData().get(i).setUsed(Objects.equals(cardId,shopAdapter.getData().get(i).getCardId()));
}
shopAdapter.notifyDataSetChanged();
//更新用户信息
UserModel.get().updateCurrentUserInfo().subscribe();
});
.compose(bindUntilEvent(FragmentEvent.DESTROY))
.doOnError(throwable -> {
toast(throwable.getMessage());
})
.subscribe(s -> {
for (int i = 0; i < shopAdapter.getData().size(); i++) {
shopAdapter.getData().get(i).setUsed(Objects.equals(cardId,shopAdapter.getData().get(i).getCardId()));
}
shopAdapter.notifyDataSetChanged();
//更新用户信息
UserModel.get().updateCurrentUserInfo().subscribe();
});
}
}

View File

@@ -120,7 +120,7 @@ class VipCenterActivity : BaseViewBindingActivity<ActivityVipCenterBinding>(),
if (UiUtils.isRtl(AppUtils.getApp())) {
banner.setBannerGalleryEffect(5, 5, 5)
} else {
banner.setBannerGalleryEffect(25, 25, 25)
banner.setBannerGalleryEffect(20, 20, 15)
}
banner.addOnPageChangeListener(object : OnPageChangeListener {
@@ -288,7 +288,7 @@ class VipCenterActivity : BaseViewBindingActivity<ActivityVipCenterBinding>(),
}
}
"${getString(R.string.vip_center_4)}\n(${count}/${authInfoList?.size}})".also {
"${getString(R.string.vip_center_4)}\n(${count}/${authInfoList?.size})".also {
binding.centerTitle2.text = it
}
// exclusivePrivilegesTitle.text = R.string.vip_center_4.toString()
@@ -344,33 +344,35 @@ class VipCenterActivity : BaseViewBindingActivity<ActivityVipCenterBinding>(),
var text =
currentChargeInfo?.productDetails?.getOneTimePurchaseOfferDetails()?.getFormattedPrice()
if (text.isNullOrEmpty()) {
text = ((currentChargeInfo?.money ?: 0.0) * 1000).toInt().toString()
text = vipViewModel.myVipInfoLiveData.value?.buyAmount.toString()
}
SelectPayTypeDialog.newInstance(
text,
!googleUnavailable,
currentChargeInfo?.getMoney() ?: 0.0
)
.apply {
setOnDiamondChargeClick {
vipViewModel.openVipWithDiamond(
currentChargeInfo?.getProdDesc()?.toIntOrNull() ?: -1
)
}
setOnGoogleChargeClick {
if (googleUnavailable) {
toast(getString(R.string.Recharge_failure))
return@setOnGoogleChargeClick
vipViewModel.myVipInfoLiveData.value?.buyAmount?.let {
SelectPayTypeDialog.newInstance(
text,
!googleUnavailable,
it
)
.apply {
setOnDiamondChargeClick {
vipViewModel.openVipWithDiamond(
currentChargeInfo?.getProdDesc()?.toIntOrNull() ?: -1
)
}
currentChargeInfo?.let { charge ->
buyProduct(charge.productDetails)
setOnGoogleChargeClick {
if (googleUnavailable) {
toast(getString(R.string.Recharge_failure))
return@setOnGoogleChargeClick
}
currentChargeInfo?.let { charge ->
buyProduct(charge.productDetails)
}
}
setOnChargeClick {
ChargeActivity.start(this@VipCenterActivity)
}
}
setOnChargeClick {
ChargeActivity.start(this@VipCenterActivity)
}
}
.show(context)
.show(context)
}
}
/*购买商品*/
@@ -406,26 +408,17 @@ class VipCenterActivity : BaseViewBindingActivity<ActivityVipCenterBinding>(),
}
if (currentChargeInfo != null){
"${currentChargeInfo?.getMoney()?.times(1000)?.toInt()} ${
"${vipViewModel.myVipInfoLiveData.value?.buyAmount} ${
getString(R.string.vip_center_5).format(
" / 30"
)
}".also { binding.tvOpenVip.text = it }
}
// 获取当前时间
val calendar = Calendar.getInstance()
// 计算30天后的时间
calendar.add(Calendar.DAY_OF_YEAR, 30)
// 定义输出格式
val dateFormat = SimpleDateFormat("yyyy/MM/dd 00:00", Locale.getDefault())
// 格式化日期时间
val formattedDate = dateFormat.format(calendar.time)
// 输出结果
val result = "$formattedDate Expires"
binding.tvAdditionalText.text = result

View File

@@ -592,30 +592,30 @@ class VipMainActivity : BaseViewBindingActivity<ActivityVipMainBinding>(),
if (text.isNullOrEmpty()) {
text = ((currentChargeInfo?.money ?: 0.0) * 1000).toInt().toString()
}
SelectPayTypeDialog.newInstance(
text,
!googleUnavailable,
currentChargeInfo?.getMoney() ?: 0.0
)
.apply {
setOnDiamondChargeClick {
vipViewModel.openVipWithDiamond(
currentChargeInfo?.getProdDesc()?.toIntOrNull() ?: -1
)
}
setOnGoogleChargeClick {
if (googleUnavailable) {
toast(getString(R.string.Recharge_failure))
return@setOnGoogleChargeClick
}
currentChargeInfo?.let { charge ->
buyProduct(charge.productDetails)
}
}
setOnChargeClick {
ChargeActivity.start(this@VipMainActivity)
}
}
.show(context)
// SelectPayTypeDialog.newInstance(
// text,
// !googleUnavailable,
// currentChargeInfo?.getMoney() ?: 0.0
// )
// .apply {
// setOnDiamondChargeClick {
// vipViewModel.openVipWithDiamond(
// currentChargeInfo?.getProdDesc()?.toIntOrNull() ?: -1
// )
// }
// setOnGoogleChargeClick {
// if (googleUnavailable) {
// toast(getString(R.string.Recharge_failure))
// return@setOnGoogleChargeClick
// }
// currentChargeInfo?.let { charge ->
// buyProduct(charge.productDetails)
// }
// }
// setOnChargeClick {
// ChargeActivity.start(this@VipMainActivity)
// }
// }
// .show(context)
}
}

View File

@@ -51,9 +51,9 @@ class SelectPayTypeDialog : BaseDialogFragment<DialogSelectPayTypeBinding>() {
fun newInstance(
descText: String,
showGoogleCharge: Boolean = false,
money: Double = 0.0
money: Int = 0
): SelectPayTypeDialog {
return newInstance(descText, (money * 1000).toLong(), showGoogleCharge)
return newInstance(descText, money.toLong(), showGoogleCharge)
}

View File

@@ -61,6 +61,7 @@ class VipUpgradeDialog : BaseDialogFragment<DialogVipUpgradeBinding>() {
}
binding?.tvVipUplevel?.setOnClickListener { dismissAllowingStateLoss() }
binding?.tvVipOrigin?.setOnClickListener { vm.saveOriginDisguise() }
binding?.ivVipIconMp4?.setLoop(Int.MAX_VALUE)
val filePath = generateResourcesFilePath(vipInfo.vipLogo)
val request = DownloadRequest.build(vipInfo.vipLogo, filePath, "gift_effect_download", null, 60000L)

View File

@@ -32,7 +32,7 @@
android:clipChildren="false"
android:clipToPadding="false"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_height="@dimen/dp_160"
android:layout_marginTop="@dimen/dp_30"
app:layout_constraintTop_toBottomOf="@id/title_bar"
android:visibility="visible"

View File

@@ -11,7 +11,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="start|center_vertical"
android:gravity="bottom|center_vertical"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -25,6 +25,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/vip_center_level_1"
android:layout_marginEnd="@dimen/dp_0"
android:layout_marginBottom="@dimen/dp_0"
android:layout_marginStart="@dimen/dp_0"
android:layout_gravity="start|bottom"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="320:136"
app:layout_constraintEnd_toEndOf="parent"
@@ -36,8 +40,8 @@
android:layout_height="@dimen/dp_140"
android:layout_gravity="end|bottom"
app:layout_constraintBottom_toBottomOf="@id/img_background"
android:layout_marginEnd="0dp"
android:layout_marginBottom="35dp" />
android:layout_marginEnd="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_35" />
</FrameLayout>
<TextView
android:id="@+id/due_date_textview"

View File

@@ -9,7 +9,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_upgrade_info"
android:layout_width="300dp"
android:layout_height="286dp"
android:layout_height="390dp"
android:layout_gravity="center"
android:background="@drawable/bg_vip_dialog"
android:orientation="vertical"
@@ -29,18 +29,10 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- <com.opensource.svgaplayer.SVGAImageView-->
<!-- android:id="@+id/iv_vip_icon"-->
<!-- android:layout_width="182dp"-->
<!-- android:layout_height="109dp"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toBottomOf="@id/tv_title" />-->
<com.tencent.qgame.animplayer.AnimView
android:id="@+id/iv_vip_icon_mp4"
android:layout_width="182dp"
android:layout_height="109dp"
android:layout_height="182dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
@@ -58,7 +50,7 @@
android:lineSpacingMultiplier="1.2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_vip_icon"
app:layout_constraintTop_toBottomOf="@id/iv_vip_icon_mp4"
app:layout_constraintVertical_chainStyle="packed"
tools:text="@string/layout_dialog_vip_upgrade_02" />

View File

@@ -367,16 +367,6 @@
android:background="@drawable/click_white_gray_selector"
android:scaleType="center"
android:src="@android:drawable/ic_menu_send" />
<ImageView
android:id="@+id/input_headline_send"
android:layout_width="50dp"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/room_ic_headline_send"
android:visibility="gone"
tools:visibility="visible" />
</LinearLayout>
</RelativeLayout>

View File

@@ -226,15 +226,6 @@
android:background="@drawable/click_white_gray_selector"
android:scaleType="center"
android:src="@android:drawable/ic_menu_send" />
<ImageView
android:visibility="gone"
tools:visibility="visible"
android:id="@+id/input_headline_send"
android:layout_width="50dp"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/room_ic_headline_send" />
</LinearLayout>
</RelativeLayout>

View File

@@ -289,15 +289,6 @@
android:background="@drawable/click_white_gray_selector"
android:scaleType="center"
android:src="@android:drawable/ic_menu_send" />
<ImageView
android:id="@+id/input_headline_send"
android:layout_width="50dp"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/room_ic_headline_send"
android:visibility="gone"
tools:visibility="visible" />
</LinearLayout>
</RelativeLayout>

View File

@@ -9,5 +9,6 @@ data class UserVipInfo(
val friendNickColour: String = "",
val preventKick: Boolean = false,
var enterHide: Boolean = false,
val enterRoomEffects: String = ""
val enterRoomEffects: String = "",
var userCardBG: String = ""
) : Serializable

View File

@@ -1,6 +1,7 @@
package com.chwl.core.vip.bean
import java.io.Serializable
import java.time.temporal.TemporalAmount
data class VipInfo(
/**
@@ -20,7 +21,8 @@ data class VipInfo(
var currScore: Int = 0,
var nextVipName: String? = null,
var isReturnProfit: Int? = null,
val returnProfits: List<VipRebateInfo>? = null
val returnProfits: List<VipRebateInfo>? = null,
var buyAmount: Int = 0
) : Serializable {
fun isRebate() = isReturnProfit == 1