feat:同步hubu完成【升级飘窗、加入公会】功能优化

This commit is contained in:
Max
2023-12-01 16:31:06 +08:00
parent e37796286b
commit d09e60d206
6 changed files with 62 additions and 25 deletions

View File

@@ -218,7 +218,10 @@ class SettingActivity : BaseViewBindingActivity<ActivitySettingBinding>(), View.
private fun debug() {
// RedPackageOpenDialog2().show(this)
val json = "{\"first\":3,\"second\":32,\"data\":{\"recvUserUid\":2735,\"recvUserAvatar\":\"https://img.pekolive.com/default_avatar.png\",\"recvUserNick\":\"66丢丢丢丢丢多多多的hhhh\",\"sendUserNick\":\"11的ass\",\"sendUserAvatar\":\"http://beta.img.pekolive.com/Fk7aur-1RBqKXC-qqBwMTjivZ3lV?imageslim\",\"sendUserUid\":2737,\"giftUrl\":\"http://beta.img.pekolive.com/Fn6h_gPFD5MwA-Ql_kcWqNpKp0JM?imageslim\",\"giftName\":\"幽靈糖果\",\"giftId\":2075,\"giftNum\":${Random.nextInt(1,1000)},\"giftGolds\":33440,\"notifyStaySecond\":5,\"isHomeShow\":true,\"isSkipRoom\":true,\"isFullScreen\":false,\"isSendMsg\":false,\"roomUid\":2737,\"roomErbanNo\":11,\"roomTitle\":\"11的工会\",\"levelNum\":${Random.nextInt(1,4)}}}"
// val json = "{\"first\":3,\"second\":32,\"data\":{\"recvUserUid\":2735,\"recvUserAvatar\":\"https://img.pekolive.com/default_avatar.png\",\"recvUserNick\":\"66丢丢丢丢丢多多多的hhhh\",\"sendUserNick\":\"11的ass\",\"sendUserAvatar\":\"http://beta.img.pekolive.com/Fk7aur-1RBqKXC-qqBwMTjivZ3lV?imageslim\",\"sendUserUid\":2737,\"giftUrl\":\"http://beta.img.pekolive.com/Fn6h_gPFD5MwA-Ql_kcWqNpKp0JM?imageslim\",\"giftName\":\"幽靈糖果\",\"giftId\":2075,\"giftNum\":${Random.nextInt(1,1000)},\"giftGolds\":33440,\"notifyStaySecond\":5,\"isHomeShow\":true,\"isSkipRoom\":true,\"isFullScreen\":false,\"isSendMsg\":false,\"roomUid\":2737,\"roomErbanNo\":11,\"roomTitle\":\"11的工会\",\"levelNum\":${Random.nextInt(1,4)}}}"
// onReceivedNimBroadcastMessage(json)
val json = "{\"first\":85,\"second\":855,\"data\":{\"nick\":\"66丢丢丢丢丢多多多的hhhh\",\"preVipName\":\"子爵\",\"floatPic\":\"https://image.hfighting.com/Fq3JtbK2acO3FN-3vWZo8ldtHfse\",\"uid\":2735,\"currVipName\":\"侯爵\",\"erbanNo\":66,\"roomUid\":2734,\"avatar\":\"https://img.pekolive.com/default_avatar.png\",\"currVipLevel\":5}}"
onReceivedNimBroadcastMessage(json)
// CommonWebViewActivity.start(this,"https://api.anan.chat/anan_vestBag/modules/myincome/index.html#/DiamondLog")
}
}

View File

@@ -16,6 +16,7 @@ import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import com.chuhai.utils.ServiceTime;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGADynamicEntity;
import com.opensource.svgaplayer.SVGAImageView;
@@ -41,6 +42,8 @@ public class AllServiceVipLevelUPDialog extends BaseDialog {
private final VipMessageInfo vipMessageInfo;
private DialogVipAllServiceLevelUpBinding binding;
private long startTime = 0;
private int frameCount = 0;
public AllServiceVipLevelUPDialog(Context context, @NonNull VipMessageInfo vipMessageInfo) {
super(context, R.style.FullScreenDialog);
@@ -77,7 +80,7 @@ public class AllServiceVipLevelUPDialog extends BaseDialog {
.append(ResUtil.getString(R.string.widget_dialog_allserviceviplevelupdialog_01), new ForegroundColorSpan(Color.WHITE))
.append("-", new CircleImageSpan(new ColorDrawable(Color.TRANSPARENT), vipMessageInfo.getAvatar(), 50, 50))
.append(" " + StringExtensionKt.sub(vipMessageInfo.getNick(), 6) + " ", new ForegroundColorSpan(getContext().getResources().getColor(R.color.notice_nick)))
.append(ResUtil.getString(R.string.widget_dialog_allserviceviplevelupdialog_02) + vipMessageInfo.getCurrVipName(), new ForegroundColorSpan(Color.WHITE)+"!");
.append(ResUtil.getString(R.string.widget_dialog_allserviceviplevelupdialog_02) + vipMessageInfo.getCurrVipName(), new ForegroundColorSpan(Color.WHITE) + "!");
SVGAImageView svgaImageView = new SVGAImageView(getContext());
svgaImageView.setLoops(1);
@@ -87,7 +90,19 @@ public class AllServiceVipLevelUPDialog extends BaseDialog {
svgaImageView.setCallback(new SimpleSvgaCallback() {
@Override
public void onFinished() {
closeSelf();
long offset = ServiceTime.INSTANCE.getTime() - startTime;
if (offset < 6000) {
int centerFrame = frameCount / 2;
if (centerFrame > 0) {
// 目前的SVGA资源最后一帧是半透明的这里强制跳到中间帧最大程度避免这种情况
svgaImageView.stepToFrame(centerFrame, false);
}
svgaImageView.postDelayed(() -> {
closeSelf();
}, 6000 - offset);
} else {
closeSelf();
}
}
});
binding.flSvgaVipNotify.addView(svgaImageView);
@@ -95,6 +110,8 @@ public class AllServiceVipLevelUPDialog extends BaseDialog {
SVGAParser.Companion.shareParser().decodeFromURL(new URL(vipMessageInfo.getFloatPic()), new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@NonNull SVGAVideoEntity svgaVideoEntity) {
frameCount = svgaVideoEntity.getFrames();
startTime = ServiceTime.INSTANCE.getTime();
SVGADynamicEntity dynamicEntity = new SVGADynamicEntity();
TextPaint textPaint = new TextPaint();
textPaint.setColor(Color.WHITE);//字体颜色

View File

@@ -7,8 +7,8 @@
android:orientation="horizontal">
<TextView
android:id="@+id/btn_cancel"
android:layout_width="110dp"
android:layout_height="@dimen/dp_38"
android:layout_width="105dp"
android:layout_height="35dp"
android:gravity="center"
android:text="@string/cancel"
android:textColor="@color/color_B3B3C3"

View File

@@ -16,6 +16,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseViewBindingFragment
import com.yizhuan.erban.common.EmptyViewHelper
import com.yizhuan.erban.common.widget.dialog.DialogManager
import com.yizhuan.erban.databinding.FragmentAssociationRoomBinding
import com.yizhuan.erban.module_hall.hall.activity.ModuleHallActivity
import com.yizhuan.erban.module_hall.hall.adapter.AssociationRoomAdapter
@@ -39,8 +40,8 @@ class AssociationRoomFragment : BaseViewBindingFragment<FragmentAssociationRoomB
}
}
private var associationRoomAdapter: AssociationRoomAdapter ?= null
private var rvDelegate: RVDelegate<HallListInfo> ?= null
private var associationRoomAdapter: AssociationRoomAdapter? = null
private var rvDelegate: RVDelegate<HallListInfo>? = null
private var list: MutableList<HallListInfo> = ArrayList()
@@ -51,7 +52,7 @@ class AssociationRoomFragment : BaseViewBindingFragment<FragmentAssociationRoomB
if (!TextUtils.isEmpty(binding.etSearch.text.toString())) {
val hallList = list
val list = hallList.filter {
it.hallName.contains(binding.etSearch.text.toString()) || it.hallId.toString()
it.hallName.contains(binding.etSearch.text.toString()) || it.ownerErbanNo.toString()
.contains(binding.etSearch.text.toString())
}
if (list.isEmpty()) {
@@ -124,25 +125,19 @@ class AssociationRoomFragment : BaseViewBindingFragment<FragmentAssociationRoomB
}
if (it.hallBtnStatus == 3) {
NimP2PMessageActivity.startRecord(
mContext, bean.hallMessageUid.toString(),
bean.hallRecordId.toString()
mContext, it.hallMessageUid.toString(),
it.hallRecordId.toString()
)
return@let
}
dialogManager.showProgressDialog(context)
HallModel.get().applyJoinHall(it.hallId)
.compose(RxHelper.bindFragment(this))
.subscribe(object : BeanObserver<String?>() {
override fun onErrorMsg(error: String) {
dialogManager.dismissDialog()
toast(error)
}
override fun onSuccess(s: String) {
dialogManager.dismissDialog()
it.hallBtnStatus = 2
associationRoomAdapter?.notifyItemChanged(position)
toast(getString(R.string.apply_success_wait_to_join_room))
dialogManager.showOkCancelWithTitleDialog(ResUtil.getString(R.string.join_organization_tips),
it.hallName ?: "",
ResUtil.getString(R.string.join_organization_ok),
ResUtil.getString(R.string.join_organization_no),
object : DialogManager.OkCancelDialogListener {
override fun onCancel() {}
override fun onOk() {
applyJoin(it, position)
}
})
}
@@ -167,6 +162,25 @@ class AssociationRoomFragment : BaseViewBindingFragment<FragmentAssociationRoomB
associationViewModel.getHallList()
}
private fun applyJoin(item: HallListInfo, position: Int) {
dialogManager.showProgressDialog(context)
HallModel.get().applyJoinHall(item.hallId)
.compose(RxHelper.bindFragment(this))
.subscribe(object : BeanObserver<String?>() {
override fun onErrorMsg(error: String) {
dialogManager.dismissDialog()
toast(error)
}
override fun onSuccess(s: String) {
dialogManager.dismissDialog()
item.hallBtnStatus = 2
associationRoomAdapter?.notifyItemChanged(position)
toast(getString(R.string.apply_success_wait_to_join_room))
}
})
}
private fun hideSoftInput() {
val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(

View File

@@ -27,4 +27,7 @@
<string name="lu_hteam_has_mute_num">已禁言人數 : %d人</string>
<string name="lu_hteam_manager_num">群管理人數 : %d人</string>
<string name="join_organization_tips">確認加入公會</string>
<string name="join_organization_ok"></string>
<string name="join_organization_no"></string>
</resources>

View File

@@ -132,7 +132,7 @@ public class ParamsInterceptor implements Interceptor {
// Log.e("ParamsInterceptor", "timestamp:"+timestamp + " url: " + oldRequest.url()+ " sign : " + signStr);
Headers headers = oldRequest.headers().newBuilder()
.add("pub_ticket", ticket)
.add("pub_ticket", ticket == null ? "" : ticket)
.add("pub_uid", uid == 0 ? "" : String.valueOf(uid))
.build();
HttpUrl.Builder builder = oldRequest.url().newBuilder()