From dd1dce530b736cfef4285be6d4cbb98bcbb3884d Mon Sep 17 00:00:00 2001 From: huangjian Date: Tue, 29 Mar 2022 14:10:10 +0800 Subject: [PATCH] =?UTF-8?q?VIP=E5=B9=BF=E6=92=AD=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8EventBus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yizhuan/erban/vip/VipBroadcastView.kt | 16 +++++++++++----- .../manager/IMNetEaseManager.java | 3 ++- .../manager/AvRoomDataManager.java | 3 +-- .../vip/VipBroadcastMsgEvent.kt | 7 +++++++ 4 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/vip/VipBroadcastMsgEvent.kt diff --git a/app/src/main/java/com/yizhuan/erban/vip/VipBroadcastView.kt b/app/src/main/java/com/yizhuan/erban/vip/VipBroadcastView.kt index 4c03453b6..5618373b1 100644 --- a/app/src/main/java/com/yizhuan/erban/vip/VipBroadcastView.kt +++ b/app/src/main/java/com/yizhuan/erban/vip/VipBroadcastView.kt @@ -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 { addMessage(it) } private val messages: MutableList 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) { diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java index 650e5b20f..6764a3224 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java @@ -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: diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java b/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java index bd3437c42..8fa352bc3 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java @@ -81,9 +81,8 @@ public final class AvRoomDataManager { */ @NonNull public final List roomSuperAdminList = new ArrayList<>(); - public final MutableLiveData roomPkLiveData = new MutableLiveData<>(); @NonNull - public final MutableLiveData vipBroadcastLiveData = new MutableLiveData<>(); + public final MutableLiveData roomPkLiveData = new MutableLiveData<>(); @Nullable public RoomInfo mCurrentRoomInfo; public BoxSwitchVo mBoxSwitchVo; diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/vip/VipBroadcastMsgEvent.kt b/core/src/main/java/com/yizhuan/xchat_android_core/vip/VipBroadcastMsgEvent.kt new file mode 100644 index 000000000..e682263cf --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/vip/VipBroadcastMsgEvent.kt @@ -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 +)