diff --git a/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt b/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt index 0842438fd..b103cdb92 100644 --- a/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt +++ b/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt @@ -29,6 +29,9 @@ class HomeViewModel : BaseViewModel() { private val _pickRoomLiveData = MutableLiveData() val pickRoomLiveData: LiveData = _pickRoomLiveData + private val _openGameRoomLiveData = MutableLiveData() + val openGameRoomLiveData: LiveData = _openGameRoomLiveData + private val _concernsLiveData = MutableLiveData>() val concernsLiveData: LiveData> = _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 + } } } diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt index 0a1e633c9..b55386fff 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt @@ -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) diff --git a/app/src/main/java/com/yizhuan/erban/home/helper/OpenRoomHelper.java b/app/src/main/java/com/yizhuan/erban/home/helper/OpenRoomHelper.java index e33825f02..b26c483ef 100644 --- a/app/src/main/java/com/yizhuan/erban/home/helper/OpenRoomHelper.java +++ b/app/src/main/java/com/yizhuan/erban/home/helper/OpenRoomHelper.java @@ -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() { @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) { diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomInfo.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomInfo.java index 2f2dd9ae2..f4ed70e0f 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomInfo.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomInfo.java @@ -48,6 +48,7 @@ public class HomeRoomInfo implements MultiItemEntity, Serializable { private String failContext; private boolean isPick; + private boolean needOpenSelfRoom; @Override public int getItemType() { diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt index d0cea2247..4f6f00de4 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt @@ -312,7 +312,7 @@ object HomeModel : BaseModel() { * * @return */ - @GET("home/fastPick") + @GET("home/fastPickV2") suspend fun fastPickGameRoom(@Query("mgId") mgId: Long?): ServiceResult /**