fix:红包过期时间动态展示(发布、小秘书)

fix:调整全服红包文案字数限制
This commit is contained in:
Max
2023-10-31 17:19:06 +08:00
parent c04d3e283b
commit b9fd24e0ff
9 changed files with 97 additions and 32 deletions

View File

@@ -5,6 +5,8 @@ import androidx.core.view.isVisible
import com.chuhai.utils.ktx.addDisableFilter
import com.chuhai.utils.ktx.getColorById
import com.chuhai.utils.ktx.singleClick
import com.chuhai.utils.ktx.toStringRes
import com.chuhai.utils.log.ILog
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseBindingFragment
import com.yizhuan.erban.databinding.RedPackagePrivateFragmentBinding
@@ -25,13 +27,16 @@ import com.yizhuan.xchat_android_library.utils.ResUtil
import com.yizhuan.xchat_android_library.utils.SingleToastUtil
import com.yizhuan.xchat_android_library.utils.codec.DESUtils
import okhttp3.internal.toLongOrDefault
import java.math.RoundingMode
import java.text.NumberFormat
/**
* Created by Max on 2023/10/23 12:14
* Desc: 厅内红包
**/
@ActLayoutRes(R.layout.red_package_private_fragment)
class PrivateRedPackageEditorFragment : BaseBindingFragment<RedPackagePrivateFragmentBinding>() {
class PrivateRedPackageEditorFragment : BaseBindingFragment<RedPackagePrivateFragmentBinding>(),
ILog {
private var passWordFragment: GiveGoldPassWordFragment? = null
@@ -43,6 +48,7 @@ class PrivateRedPackageEditorFragment : BaseBindingFragment<RedPackagePrivateFra
mBinding.etText.addDisableFilter(" ", "\n")
initTypeView()
updateTimeView(true)
initTips()
}
override fun onSetListener() {
@@ -58,6 +64,21 @@ class PrivateRedPackageEditorFragment : BaseBindingFragment<RedPackagePrivateFra
}
}
private fun initTips() {
val time = InitialModel.get().cacheInitInfo?.redEnvelopeConfig?.endSecond
if (time != null) {
try {
val hour = NumberFormat.getInstance().apply {
maximumFractionDigits = 2
roundingMode = RoundingMode.FLOOR
}.format(time / 3600.0)
mBinding.tvTips.text = R.string.red_package_tips_format.toStringRes().format(hour)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun initTypeView() {
mBinding.recyclerView.addItemDecoration(
ColorDecoration(

View File

@@ -22,6 +22,8 @@ import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import com.yizhuan.xchat_android_library.utils.SingleToastUtil
import com.yizhuan.xchat_android_library.utils.codec.DESUtils
import okhttp3.internal.toLongOrDefault
import java.math.RoundingMode
import java.text.NumberFormat
/**
* Created by Max on 2023/10/23 12:14
@@ -33,10 +35,11 @@ class PublicRedPackageEditorFragment : BaseBindingFragment<RedPackagePublicFragm
private var passWordFragment: GiveGoldPassWordFragment? = null
override fun initiate() {
initTips()
mBinding.etText.addDisableFilter("\n")
mBinding.etText.setOnInputChangedListener {
mBinding.tvTextLength.text =
R.string.red_package_result_count_format.toStringRes().format(this, 20)
R.string.red_package_result_count_format.toStringRes().format(this, 10)
true
}
@@ -45,6 +48,21 @@ class PublicRedPackageEditorFragment : BaseBindingFragment<RedPackagePublicFragm
}
}
private fun initTips() {
val time = InitialModel.get().cacheInitInfo?.redEnvelopeConfig?.endSecond
if (time != null) {
try {
val hour = NumberFormat.getInstance().apply {
maximumFractionDigits = 2
roundingMode = RoundingMode.FLOOR
}.format(time / 3600.0)
mBinding.tvTips.text = R.string.red_package_tips_format.toStringRes().format(hour)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun checkSend() {
val initInfo = InitialModel.get().cacheInitInfo ?: InitInfo()
val minNum = initInfo.redEnvelopeConfig.serverRedEnvelopeMinNum

View File

@@ -30,6 +30,7 @@ public class MsgViewHolderRedPackage extends MsgViewHolderBase {
private TextView tvNickname;
private TextView tvAll;
private TextView tvTip;
@Deprecated(since = "2.2.0版本红包失效时间是客户端写死的以后用消息体内的endTime")
private int halfHour = 60 * 30 * 1000;
@@ -57,30 +58,40 @@ public class MsgViewHolderRedPackage extends MsgViewHolderBase {
tvAll.setVisibility(View.GONE);
tvTip.setText(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_02));
contentContainer.setAlpha(0.5f);
} else if (CurrentTimeUtils.getCurrentTime() - message.getTime() < halfHour) {
tvNickname.setText(notifyInfo.getSendUserNick());
tvAll.setText(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_03));
tvAll.setVisibility(View.VISIBLE);
tvTip.setText(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_04));
contentContainer.setAlpha(1f);
DialogManager.OkCancelDialogListener listener = () -> AVRoomActivity.start(context, notifyInfo.getRoomUid(),
AVRoomActivity.FROM_TYPE_ALL_RED, notifyInfo.getSendUserNick(), notifyInfo);
contentContainer.setOnClickListener(v -> {
if (AvRoomDataManager.get().isOwnerOnMic() && AvRoomDataManager.get().getRoomId() != notifyInfo.getRoomUid()) {
new DialogManager(context).showOkCancelDialog(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_05), true, listener);
} else {
listener.onOk();
} else{
long endTime;
notifyInfo.getEndTime();
if (notifyInfo.getEndTime() != null) {
// 2.2.0版本后 新增动态失效时间
endTime = notifyInfo.getEndTime();
} else {
// 可能是2.2.0版本前失效时间固定为30分
endTime = message.getTime() + halfHour;
}
if (CurrentTimeUtils.getCurrentTime() < endTime) {
tvNickname.setText(notifyInfo.getSendUserNick());
tvAll.setText(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_03));
tvAll.setVisibility(View.VISIBLE);
tvTip.setText(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_04));
contentContainer.setAlpha(1f);
DialogManager.OkCancelDialogListener listener = () -> AVRoomActivity.start(context, notifyInfo.getRoomUid(),
AVRoomActivity.FROM_TYPE_ALL_RED, notifyInfo.getSendUserNick(), notifyInfo);
contentContainer.setOnClickListener(v -> {
if (AvRoomDataManager.get().isOwnerOnMic() && AvRoomDataManager.get().getRoomId() != notifyInfo.getRoomUid()) {
new DialogManager(context).showOkCancelDialog(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_05), true, listener);
} else {
listener.onOk();
}
}
}
);
} else {//已失效
tvNickname.setText(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_06));
tvAll.setVisibility(View.GONE);
tvTip.setText(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_07));
contentContainer.setAlpha(0.5f);
);
} else {
//已失效
tvNickname.setText(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_06));
tvAll.setVisibility(View.GONE);
tvTip.setText(ResUtil.getString(R.string.im_chat_msgviewholderredpackage_07));
contentContainer.setAlpha(0.5f);
}
}
}

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@@ -212,10 +213,11 @@
app:layout_constraintTop_toBottomOf="@id/layout_parameter" />
<TextView
android:id="@+id/tv_tips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/red_package_tips"
tools:text="@string/red_package_tips_format"
android:textColor="@color/color_94959C"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@@ -127,7 +128,7 @@
android:layout_marginTop="24dp"
android:background="@drawable/shape_f8f8fa_8"
android:gravity="center"
android:maxLength="20"
android:maxLength="10"
android:paddingHorizontal="10dp"
android:paddingVertical="10dp"
android:hint="@string/red_package_msg_def"
@@ -142,7 +143,7 @@
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:layout_marginBottom="8dp"
android:text="0/20"
android:text="0/10"
android:textColor="@color/color_94959C"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@id/et_text"
@@ -162,10 +163,11 @@
app:layout_constraintTop_toBottomOf="@id/et_text" />
<TextView
android:id="@+id/tv_tips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/red_package_tips"
tools:text="@string/red_package_tips_format"
android:textColor="@color/color_94959C"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"

View File

@@ -5161,7 +5161,7 @@
<string name="red_package_type">搶紅包條件</string>
<string name="red_package_msg_hint">輸入指定彈幕內容最多10個字符</string>
<string name="red_package_send">發紅包</string>
<string name="red_package_tips">未搶完的紅包將在12小時後返還你的錢包</string>
<string name="red_package_tips_format">未搶完的紅包將在%s小時後返還你的錢包</string>
<string name="red_package_now">立即生效</string>
<string name="red_package_delay">限時生效</string>
<string name="red_package_msg_def">恭喜發財,大吉大利!</string>