我的页面快速匹配进房逻辑优化
This commit is contained in:
@@ -29,6 +29,9 @@ class HomeViewModel : BaseViewModel() {
|
||||
private val _pickRoomLiveData = MutableLiveData<HomeRoomInfo>()
|
||||
val pickRoomLiveData: LiveData<HomeRoomInfo> = _pickRoomLiveData
|
||||
|
||||
private val _openGameRoomLiveData = MutableLiveData<Long>()
|
||||
val openGameRoomLiveData: LiveData<Long> = _openGameRoomLiveData
|
||||
|
||||
private val _concernsLiveData = MutableLiveData<List<HomeRoomInfo>>()
|
||||
val concernsLiveData: LiveData<List<HomeRoomInfo>> = _concernsLiveData
|
||||
|
||||
@@ -116,7 +119,12 @@ class HomeViewModel : BaseViewModel() {
|
||||
|
||||
fun fastPickGameRoom(mgId: Long? = null) {
|
||||
safeLaunch {
|
||||
_pickRoomLiveData.value = HomeModel.fastPickGameRoom(mgId)
|
||||
val homeRoomInfo = HomeModel.fastPickGameRoom(mgId)
|
||||
if (homeRoomInfo?.isPick == true) {
|
||||
_pickRoomLiveData.value = homeRoomInfo
|
||||
} else if (homeRoomInfo?.isNeedOpenSelfRoom == true) {
|
||||
_openGameRoomLiveData.value = mgId
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -17,6 +17,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.yizhuan.erban.R
|
||||
import com.yizhuan.erban.UIHelper
|
||||
import com.yizhuan.erban.avroom.activity.AVRoomActivity
|
||||
import com.yizhuan.erban.base.BaseActivity
|
||||
import com.yizhuan.erban.base.BaseFragment
|
||||
import com.yizhuan.erban.databinding.FragmentMeBinding
|
||||
import com.yizhuan.erban.home.HomeViewModel
|
||||
@@ -26,6 +27,7 @@ import com.yizhuan.erban.home.activity.VisitorListActivity
|
||||
import com.yizhuan.erban.home.adapter.MeCenterAdapter
|
||||
import com.yizhuan.erban.home.adapter.MeGameAdapter
|
||||
import com.yizhuan.erban.home.helper.BannerHelper
|
||||
import com.yizhuan.erban.home.helper.OpenRoomHelper
|
||||
import com.yizhuan.erban.skill.activity.SkillHomeActivity
|
||||
import com.yizhuan.erban.skill.activity.SkillHomeActivity.Companion.start
|
||||
import com.yizhuan.erban.ui.pay.ChargeActivity
|
||||
@@ -47,6 +49,7 @@ import com.yizhuan.xchat_android_core.noble.NobleUtil
|
||||
import com.yizhuan.xchat_android_core.pay.PayModel
|
||||
import com.yizhuan.xchat_android_core.pay.event.UpdateWalletInfoEvent
|
||||
import com.yizhuan.xchat_android_core.room.bean.MeCenterInfo
|
||||
import com.yizhuan.xchat_android_core.room.bean.RoomInfo
|
||||
import com.yizhuan.xchat_android_core.room.game.GameInfo
|
||||
import com.yizhuan.xchat_android_core.statistic.StatisticManager
|
||||
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol
|
||||
@@ -137,6 +140,11 @@ class MeFragment : BaseFragment(), View.OnClickListener {
|
||||
AVRoomActivity.start(mContext, it.uid)
|
||||
}
|
||||
}
|
||||
homeViewModel.openGameRoomLiveData.observe(viewLifecycleOwner) {
|
||||
it?.let {
|
||||
OpenRoomHelper.openRoom(mContext as BaseActivity, RoomInfo.ROOMTYPE_GAME, it)
|
||||
}
|
||||
}
|
||||
vipViewModel.myVipInfoLiveData.observe(viewLifecycleOwner) {
|
||||
it?.let {
|
||||
mBinding.ivVipIcon.isVisible = true
|
||||
@@ -242,8 +250,8 @@ class MeFragment : BaseFragment(), View.OnClickListener {
|
||||
)
|
||||
recyclerView.layoutManager = GridLayoutManager(context, 4)
|
||||
giftAdapter = MeGameAdapter()
|
||||
giftAdapter.setOnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
|
||||
homeViewModel.fastPickGameRoom(position.toLong())
|
||||
giftAdapter.setOnItemClickListener { _, _, position: Int ->
|
||||
homeViewModel.fastPickGameRoom(giftAdapter.getItem(position)?.mgId?.toLong())
|
||||
}
|
||||
recyclerView.adapter = giftAdapter
|
||||
cacheItemView.put(pagePos, recyclerView)
|
||||
|
@@ -113,7 +113,7 @@ public class OpenRoomHelper {
|
||||
new CreateRoomDialog().show(activity);
|
||||
} else {
|
||||
if (roomInfo.isValid()) {
|
||||
if (type == RoomInfo.ROOMTYPE_DEFAULT || roomInfo.getType() == type) {
|
||||
if (type == RoomInfo.ROOMTYPE_DEFAULT || (roomInfo.getType() == type && roomInfo.getMgId() == gameId)) {
|
||||
onOpenRoomSuccess(activity, roomInfo);
|
||||
} else {
|
||||
updateRoomInfo(activity, roomInfo, type, gameId, true);
|
||||
@@ -137,20 +137,20 @@ public class OpenRoomHelper {
|
||||
public static void updateRoomInfo(BaseActivity activity, RoomInfo roomInfo, int type, long gameId, boolean needOpen) {
|
||||
RoomSettingModel roomSettingModel = new RoomSettingModel();
|
||||
roomSettingModel.updateRoomInfo(
|
||||
roomInfo.getTitle(),
|
||||
roomInfo.getRoomDesc(),
|
||||
roomInfo.getIntroduction(),
|
||||
roomInfo.roomPwd,
|
||||
roomInfo.getRoomTypeLable(),
|
||||
roomInfo.tagId,
|
||||
AuthModel.get().getCurrentUid(),
|
||||
AuthModel.get().getTicket(),
|
||||
roomInfo.isHasAnimationEffect(),
|
||||
roomInfo.getAudioQuality(),
|
||||
roomInfo.getLimitType(),
|
||||
roomInfo.isPureMode(),
|
||||
type,
|
||||
gameId)
|
||||
roomInfo.getTitle(),
|
||||
roomInfo.getRoomDesc(),
|
||||
roomInfo.getIntroduction(),
|
||||
roomInfo.roomPwd,
|
||||
roomInfo.getRoomTypeLable(),
|
||||
roomInfo.tagId,
|
||||
AuthModel.get().getCurrentUid(),
|
||||
AuthModel.get().getTicket(),
|
||||
roomInfo.isHasAnimationEffect(),
|
||||
roomInfo.getAudioQuality(),
|
||||
roomInfo.getLimitType(),
|
||||
roomInfo.isPureMode(),
|
||||
type,
|
||||
gameId)
|
||||
.compose(RxHelper.bindContext(activity))
|
||||
.subscribe(new BeanObserver<RoomInfo>() {
|
||||
@Override
|
||||
@@ -170,13 +170,13 @@ public class OpenRoomHelper {
|
||||
@SuppressLint("CheckResult")
|
||||
private static void openRoom(BaseActivity activity, RoomInfo roomInfo, int type, long gameId) {
|
||||
AvRoomModel.get().openRoom(
|
||||
AuthModel.get().getCurrentUid(),
|
||||
type == RoomInfo.ROOMTYPE_DEFAULT ? (roomInfo.getType() == 0 ? RoomInfo.ROOMTYPE_HOME_PARTY : roomInfo.getType()) : type,
|
||||
roomInfo.getTitle(),
|
||||
roomInfo.getRoomDesc(),
|
||||
roomInfo.getBackPic(),
|
||||
null,
|
||||
gameId)
|
||||
AuthModel.get().getCurrentUid(),
|
||||
type == RoomInfo.ROOMTYPE_DEFAULT ? (roomInfo.getType() == 0 ? RoomInfo.ROOMTYPE_HOME_PARTY : roomInfo.getType()) : type,
|
||||
roomInfo.getTitle(),
|
||||
roomInfo.getRoomDesc(),
|
||||
roomInfo.getBackPic(),
|
||||
null,
|
||||
gameId)
|
||||
.compose(RxHelper.bindActivity(activity))
|
||||
.subscribe((roomResult, throwable) -> {
|
||||
if (throwable != null) {
|
||||
|
@@ -48,6 +48,7 @@ public class HomeRoomInfo implements MultiItemEntity, Serializable {
|
||||
|
||||
private String failContext;
|
||||
private boolean isPick;
|
||||
private boolean needOpenSelfRoom;
|
||||
|
||||
@Override
|
||||
public int getItemType() {
|
||||
|
@@ -312,7 +312,7 @@ object HomeModel : BaseModel() {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GET("home/fastPick")
|
||||
@GET("home/fastPickV2")
|
||||
suspend fun fastPickGameRoom(@Query("mgId") mgId: Long?): ServiceResult<HomeRoomInfo>
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user