VIP广播改为使用EventBus

This commit is contained in:
huangjian
2022-03-29 14:10:10 +08:00
parent c75bfce0ad
commit dd1dce530b
4 changed files with 21 additions and 8 deletions

View File

@@ -9,19 +9,21 @@ import android.widget.FrameLayout
import androidx.core.animation.doOnEnd
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.lifecycle.Observer
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
import com.yizhuan.erban.databinding.LayoutVipBroadcastViewBinding
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.im.custom.bean.VipMessageAttachment
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.anotherroompk.ShowUserInfoDialogEvent
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_core.vip.VipBroadcastMsgEvent
import com.yizhuan.xchat_android_library.rxbus.RxBus
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import java.util.concurrent.TimeUnit
class VipBroadcastView @JvmOverloads constructor(
@@ -29,7 +31,6 @@ class VipBroadcastView @JvmOverloads constructor(
) : FrameLayout(context, attrs, defStyleAttr) {
private val binding = LayoutVipBroadcastViewBinding.inflate(LayoutInflater.from(context))
private val observer = Observer<ChatRoomMessage> { addMessage(it) }
private val messages: MutableList<ChatRoomMessage> by lazy { ArrayList() }
private var disposable: Disposable? = null
@@ -38,15 +39,20 @@ class VipBroadcastView @JvmOverloads constructor(
binding.llRoot.setOnClickListener {
RxBus.get().post(ShowUserInfoDialogEvent(binding.llRoot.tag as String))
}
AvRoomDataManager.get().vipBroadcastLiveData.observeForever(observer)
EventBus.getDefault().register(this)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
AvRoomDataManager.get().vipBroadcastLiveData.removeObserver(observer)
EventBus.getDefault().unregister(this)
disposable?.dispose()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onVipBroadcastMsgEvent(event: VipBroadcastMsgEvent) {
event.message?.let { addMessage(it) }
}
private fun addMessage(chatRoomMessage: ChatRoomMessage) {
messages.add(chatRoomMessage)
if (isGone) {

View File

@@ -156,6 +156,7 @@ import com.yizhuan.xchat_android_core.utils.ExtensionUtils;
import com.yizhuan.xchat_android_core.utils.LogUtils;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_core.vip.VipBroadcastMsgEvent;
import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack;
import com.yizhuan.xchat_android_library.rxbus.RxBus;
import com.yizhuan.xchat_android_library.utils.JavaUtil;
@@ -1340,7 +1341,7 @@ public final class IMNetEaseManager {
second == CUSTOM_MSG_VIP_ROOM_OPEN) {
addMessages(msg);
}else if (second == CUSTOM_MSG_VIP_ROOM_BROADCAST){
AvRoomDataManager.get().vipBroadcastLiveData.postValue(msg);
EventBus.getDefault().post(new VipBroadcastMsgEvent(msg));
}
break;
case ANCHOR_ROOM_AUDIENCE_UPMIC:

View File

@@ -81,9 +81,8 @@ public final class AvRoomDataManager {
*/
@NonNull
public final List<ChatRoomMember> roomSuperAdminList = new ArrayList<>();
public final MutableLiveData<RoomPkBean> roomPkLiveData = new MutableLiveData<>();
@NonNull
public final MutableLiveData<ChatRoomMessage> vipBroadcastLiveData = new MutableLiveData<>();
public final MutableLiveData<RoomPkBean> roomPkLiveData = new MutableLiveData<>();
@Nullable
public RoomInfo mCurrentRoomInfo;
public BoxSwitchVo mBoxSwitchVo;

View File

@@ -0,0 +1,7 @@
package com.yizhuan.xchat_android_core.vip
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
data class VipBroadcastMsgEvent(
val message: ChatRoomMessage? = null
)