我的页面快速匹配进房逻辑优化

This commit is contained in:
huangjian
2022-07-26 17:33:50 +08:00
parent 12ee1c9441
commit 317d50ae02
5 changed files with 43 additions and 26 deletions

View File

@@ -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
}
}
}

View File

@@ -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)

View File

@@ -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) {

View File

@@ -48,6 +48,7 @@ public class HomeRoomInfo implements MultiItemEntity, Serializable {
private String failContext;
private boolean isPick;
private boolean needOpenSelfRoom;
@Override
public int getItemType() {

View File

@@ -312,7 +312,7 @@ object HomeModel : BaseModel() {
*
* @return
*/
@GET("home/fastPick")
@GET("home/fastPickV2")
suspend fun fastPickGameRoom(@Query("mgId") mgId: Long?): ServiceResult<HomeRoomInfo>
/**