VIP广播改为使用EventBus
This commit is contained in:
@@ -9,19 +9,21 @@ import android.widget.FrameLayout
|
|||||||
import androidx.core.animation.doOnEnd
|
import androidx.core.animation.doOnEnd
|
||||||
import androidx.core.view.isGone
|
import androidx.core.view.isGone
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
|
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
|
||||||
import com.yizhuan.erban.databinding.LayoutVipBroadcastViewBinding
|
import com.yizhuan.erban.databinding.LayoutVipBroadcastViewBinding
|
||||||
import com.yizhuan.erban.ui.utils.ImageLoadUtils
|
import com.yizhuan.erban.ui.utils.ImageLoadUtils
|
||||||
import com.yizhuan.xchat_android_core.im.custom.bean.VipMessageAttachment
|
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.room.anotherroompk.ShowUserInfoDialogEvent
|
||||||
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
|
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 com.yizhuan.xchat_android_library.rxbus.RxBus
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.Disposable
|
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
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
class VipBroadcastView @JvmOverloads constructor(
|
class VipBroadcastView @JvmOverloads constructor(
|
||||||
@@ -29,7 +31,6 @@ class VipBroadcastView @JvmOverloads constructor(
|
|||||||
) : FrameLayout(context, attrs, defStyleAttr) {
|
) : FrameLayout(context, attrs, defStyleAttr) {
|
||||||
|
|
||||||
private val binding = LayoutVipBroadcastViewBinding.inflate(LayoutInflater.from(context))
|
private val binding = LayoutVipBroadcastViewBinding.inflate(LayoutInflater.from(context))
|
||||||
private val observer = Observer<ChatRoomMessage> { addMessage(it) }
|
|
||||||
private val messages: MutableList<ChatRoomMessage> by lazy { ArrayList() }
|
private val messages: MutableList<ChatRoomMessage> by lazy { ArrayList() }
|
||||||
private var disposable: Disposable? = null
|
private var disposable: Disposable? = null
|
||||||
|
|
||||||
@@ -38,15 +39,20 @@ class VipBroadcastView @JvmOverloads constructor(
|
|||||||
binding.llRoot.setOnClickListener {
|
binding.llRoot.setOnClickListener {
|
||||||
RxBus.get().post(ShowUserInfoDialogEvent(binding.llRoot.tag as String))
|
RxBus.get().post(ShowUserInfoDialogEvent(binding.llRoot.tag as String))
|
||||||
}
|
}
|
||||||
AvRoomDataManager.get().vipBroadcastLiveData.observeForever(observer)
|
EventBus.getDefault().register(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDetachedFromWindow() {
|
override fun onDetachedFromWindow() {
|
||||||
super.onDetachedFromWindow()
|
super.onDetachedFromWindow()
|
||||||
AvRoomDataManager.get().vipBroadcastLiveData.removeObserver(observer)
|
EventBus.getDefault().unregister(this)
|
||||||
disposable?.dispose()
|
disposable?.dispose()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
|
fun onVipBroadcastMsgEvent(event: VipBroadcastMsgEvent) {
|
||||||
|
event.message?.let { addMessage(it) }
|
||||||
|
}
|
||||||
|
|
||||||
private fun addMessage(chatRoomMessage: ChatRoomMessage) {
|
private fun addMessage(chatRoomMessage: ChatRoomMessage) {
|
||||||
messages.add(chatRoomMessage)
|
messages.add(chatRoomMessage)
|
||||||
if (isGone) {
|
if (isGone) {
|
||||||
|
@@ -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.LogUtils;
|
||||||
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
|
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
|
||||||
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
|
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.net.rxnet.callback.CallBack;
|
||||||
import com.yizhuan.xchat_android_library.rxbus.RxBus;
|
import com.yizhuan.xchat_android_library.rxbus.RxBus;
|
||||||
import com.yizhuan.xchat_android_library.utils.JavaUtil;
|
import com.yizhuan.xchat_android_library.utils.JavaUtil;
|
||||||
@@ -1340,7 +1341,7 @@ public final class IMNetEaseManager {
|
|||||||
second == CUSTOM_MSG_VIP_ROOM_OPEN) {
|
second == CUSTOM_MSG_VIP_ROOM_OPEN) {
|
||||||
addMessages(msg);
|
addMessages(msg);
|
||||||
}else if (second == CUSTOM_MSG_VIP_ROOM_BROADCAST){
|
}else if (second == CUSTOM_MSG_VIP_ROOM_BROADCAST){
|
||||||
AvRoomDataManager.get().vipBroadcastLiveData.postValue(msg);
|
EventBus.getDefault().post(new VipBroadcastMsgEvent(msg));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ANCHOR_ROOM_AUDIENCE_UPMIC:
|
case ANCHOR_ROOM_AUDIENCE_UPMIC:
|
||||||
|
@@ -81,9 +81,8 @@ public final class AvRoomDataManager {
|
|||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public final List<ChatRoomMember> roomSuperAdminList = new ArrayList<>();
|
public final List<ChatRoomMember> roomSuperAdminList = new ArrayList<>();
|
||||||
public final MutableLiveData<RoomPkBean> roomPkLiveData = new MutableLiveData<>();
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public final MutableLiveData<ChatRoomMessage> vipBroadcastLiveData = new MutableLiveData<>();
|
public final MutableLiveData<RoomPkBean> roomPkLiveData = new MutableLiveData<>();
|
||||||
@Nullable
|
@Nullable
|
||||||
public RoomInfo mCurrentRoomInfo;
|
public RoomInfo mCurrentRoomInfo;
|
||||||
public BoxSwitchVo mBoxSwitchVo;
|
public BoxSwitchVo mBoxSwitchVo;
|
||||||
|
@@ -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
|
||||||
|
)
|
Reference in New Issue
Block a user