feat:拆分首页ViewModel

This commit is contained in:
Max
2023-12-27 11:22:00 +08:00
parent 321fa1b9ea
commit b9d59e9477
8 changed files with 241 additions and 344 deletions

View File

@@ -0,0 +1,90 @@
package com.nnbc123.app.home
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.nnbc123.app.base.BaseViewModel
import com.nnbc123.core.bean.response.ListResult
import com.nnbc123.core.home.bean.HomeGameTab
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.model.HomeModel
import com.nnbc123.core.user.bean.UserInfo
import com.nnbc123.core.utils.toast
/**
* Created by Max on 2023/12/27 10:18
* Desc:
**/
class FriendsViewModel: BaseViewModel() {
private val _resourceJumpLiveData = MutableLiveData<HomeRoomInfo?>()
val resourceJumpLiveData: LiveData<HomeRoomInfo?> = _resourceJumpLiveData
private val _homeChatPickLiveData = MutableLiveData<String?>()
val homeChatPickLiveData: LiveData<String?> = _homeChatPickLiveData
private val _newFriendLiveData = MutableLiveData<ListResult<UserInfo>>()
val newFriendLiveData: LiveData<ListResult<UserInfo>> = _newFriendLiveData
val friendRecommendModeLiveData = MutableLiveData<ListResult<UserInfo>>()
val gameTabLiveData = MutableLiveData<MutableList<HomeGameTab>>()
fun getResourceJumpInfo(id: Long) {
safeLaunch(
onError = {
_resourceJumpLiveData.value = null
it.message.toast()
},
block = {
_resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0)
}
)
}
fun getHomeChatPick() {
safeLaunch(
onError = {
_homeChatPickLiveData.value = null
it.message.toast()
},
block = {
_homeChatPickLiveData.value = HomeModel.getHomeChatPick()
}
)
}
fun getNewFriendList(gender: Int? = null, gameId: Long? = null) {
safeLaunch(
onError = {
_newFriendLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getNewFriendList(gender, gameId)
_newFriendLiveData.value = ListResult.success(result, 1)
}
)
}
fun getFriendRecommendMore() {
safeLaunch(
onError = {
friendRecommendModeLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getFriendRecommendMore()
friendRecommendModeLiveData.value = ListResult.success(result, 1)
}
)
}
fun getHomeGameTab() {
safeLaunch {
if (gameTabLiveData.value == null) {
HomeModel.getHomeGameTabListByLocal()?.let {
gameTabLiveData.value = it
}
}
gameTabLiveData.value = HomeModel.getHomeGameTabList()
}
}
}

View File

@@ -0,0 +1,45 @@
package com.nnbc123.app.home
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.nnbc123.app.base.BaseViewModel
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.model.HomeModel
import com.nnbc123.core.utils.toast
/**
* Created by Max on 2023/12/27 10:18
* Desc:
**/
class HomeChildViewModel: BaseViewModel() {
private val _resourceJumpLiveData = MutableLiveData<HomeRoomInfo?>()
val resourceJumpLiveData: LiveData<HomeRoomInfo?> = _resourceJumpLiveData
private val _homeChatPickLiveData = MutableLiveData<String?>()
val homeChatPickLiveData: LiveData<String?> = _homeChatPickLiveData
fun getResourceJumpInfo(id: Long) {
safeLaunch(
onError = {
_resourceJumpLiveData.value = null
it.message.toast()
},
block = {
_resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0)
}
)
}
fun getHomeChatPick() {
safeLaunch(
onError = {
_homeChatPickLiveData.value = null
it.message.toast()
},
block = {
_homeChatPickLiveData.value = HomeModel.getHomeChatPick()
}
)
}
}

View File

@@ -2,118 +2,31 @@ package com.nnbc123.app.home
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.bean.response.ListResult import com.nnbc123.core.bean.response.ListResult
import com.nnbc123.core.community.CommunityConstant
import com.nnbc123.core.home.bean.* import com.nnbc123.core.home.bean.*
import com.nnbc123.core.home.model.HomeModel import com.nnbc123.core.home.model.HomeModel
import com.nnbc123.core.room.bean.AnchorInfo import com.nnbc123.core.room.bean.AnchorInfo
import com.nnbc123.core.room.bean.HomeLiveTopInfo
import com.nnbc123.core.room.bean.SingleRoomSortInfo
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.utils.toast
import com.nnbc123.app.base.BaseViewModel import com.nnbc123.app.base.BaseViewModel
import com.nnbc123.core.user.bean.UserInfo
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
class HomeViewModel : BaseViewModel() { class HomeViewModel : BaseViewModel() {
private val _bannerLiveData = MutableLiveData<List<BannerInfo>>()
val bannerLiveData: LiveData<List<BannerInfo>> = _bannerLiveData
private val _partyBannerLiveData = MutableLiveData<List<BannerInfo>?>()
val partyBannerLiveData: LiveData<List<BannerInfo>?> = _partyBannerLiveData
private val _hotRoomLiveData = MutableLiveData<ListResult<HomeRoomInfo>>() private val _hotRoomLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val hotRoomLiveData: LiveData<ListResult<HomeRoomInfo>> = _hotRoomLiveData val hotRoomLiveData: LiveData<ListResult<HomeRoomInfo>> = _hotRoomLiveData
private val _gameRoomLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val gameRoomLiveData: LiveData<ListResult<HomeRoomInfo>> = _gameRoomLiveData
private val _pickRoomLiveData = MutableLiveData<HomeRoomInfo?>() private val _pickRoomLiveData = MutableLiveData<HomeRoomInfo?>()
val pickRoomLiveData: LiveData<HomeRoomInfo?> = _pickRoomLiveData val pickRoomLiveData: LiveData<HomeRoomInfo?> = _pickRoomLiveData
private val _openGameRoomLiveData = MutableLiveData<Long?>() private val _openGameRoomLiveData = MutableLiveData<Long?>()
val openGameRoomLiveData: LiveData<Long?> = _openGameRoomLiveData val openGameRoomLiveData: LiveData<Long?> = _openGameRoomLiveData
private val _concernsLiveData = MutableLiveData<List<HomeRoomInfo>>()
val concernsLiveData: LiveData<List<HomeRoomInfo>> = _concernsLiveData
private val _collectLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val collectLiveData: LiveData<ListResult<HomeRoomInfo>> = _collectLiveData
private val _tagLiveData = MutableLiveData<MutableList<HomeTagInfo>>()
val tagLiveData: LiveData<MutableList<HomeTagInfo>> = _tagLiveData
private val _emptyLiveData = MutableLiveData<Boolean>()
val emptyLiveData: LiveData<Boolean> = _emptyLiveData
private val _resourceLiveData = MutableLiveData<MutableList<ResourceInfo>>() private val _resourceLiveData = MutableLiveData<MutableList<ResourceInfo>>()
val resourceLiveData: LiveData<MutableList<ResourceInfo>> = _resourceLiveData val resourceLiveData: LiveData<MutableList<ResourceInfo>> = _resourceLiveData
private val _resourceJumpLiveData = MutableLiveData<HomeRoomInfo?>()
val resourceJumpLiveData: LiveData<HomeRoomInfo?> = _resourceJumpLiveData
private val _homeChatPickLiveData = MutableLiveData<String?>()
val homeChatPickLiveData: LiveData<String?> = _homeChatPickLiveData
private val _singleAnchorHomeLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val singleAnchorHomeLiveData: LiveData<ListResult<HomeRoomInfo>> = _singleAnchorHomeLiveData
private val _singleRoomSortInfoLiveData = MutableLiveData<ListResult<SingleRoomSortInfo>>()
val singleRoomSortInfoLiveData: LiveData<ListResult<SingleRoomSortInfo>> =
_singleRoomSortInfoLiveData
private val _homeLiveTopInfoLiveData = MutableLiveData<HomeLiveTopInfo?>()
val homeLiveTopInfoLiveData: LiveData<HomeLiveTopInfo?> = _homeLiveTopInfoLiveData
private val _anchorInfoLiveData = MutableLiveData<AnchorInfo?>() private val _anchorInfoLiveData = MutableLiveData<AnchorInfo?>()
val anchorInfoLiveData: LiveData<AnchorInfo?> = _anchorInfoLiveData val anchorInfoLiveData: LiveData<AnchorInfo?> = _anchorInfoLiveData
private val _partyRecommendRoomLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val partyRecommendRoomLiveData: LiveData<ListResult<HomeRoomInfo>> =
_partyRecommendRoomLiveData
private val _partyRecommendRoomMoreLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val partyRecommendRoomMoreLiveData: LiveData<ListResult<HomeRoomInfo>> =
_partyRecommendRoomMoreLiveData
private val _giftServiceLiveData = MutableLiveData<ListResult<GiftServiceMsgVo>>()
val giftServiceLiveData: LiveData<ListResult<GiftServiceMsgVo>> = _giftServiceLiveData
private val _newFriendLiveData = MutableLiveData<ListResult<UserInfo>>()
val newFriendLiveData: LiveData<ListResult<UserInfo>> = _newFriendLiveData
val gameTabLiveData = MutableLiveData<MutableList<HomeGameTab>>() val gameTabLiveData = MutableLiveData<MutableList<HomeGameTab>>()
val friendRecommendModeLiveData = MutableLiveData<ListResult<UserInfo>>()
fun getHomeGameTab() {
safeLaunch {
if (gameTabLiveData.value == null) {
HomeModel.getHomeGameTabListByLocal()?.let {
gameTabLiveData.value = it
}
}
gameTabLiveData.value = HomeModel.getHomeGameTabList()
}
}
fun getBannerInfo() {
safeLaunch {
_bannerLiveData.value = HomeModel.getHomeBanner("1")
}
}
fun getTagInfo() {
safeLaunch {
_tagLiveData.value = HomeModel.getHomeTag()
}
}
fun getHomeResource() { fun getHomeResource() {
safeLaunch( safeLaunch(
block = { block = {
@@ -127,31 +40,6 @@ class HomeViewModel : BaseViewModel() {
onError = { onError = {
} }
) )
}
fun getResourceJumpInfo(id: Long) {
safeLaunch(
onError = {
_resourceJumpLiveData.value = null
it.message.toast()
},
block = {
_resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0)
}
)
}
fun getHomeChatPick() {
safeLaunch(
onError = {
_homeChatPickLiveData.value = null
it.message.toast()
},
block = {
_homeChatPickLiveData.value = HomeModel.getHomeChatPick()
}
)
} }
fun getHotRoom(pageNum: Int, pageSize: Int) { fun getHotRoom(pageNum: Int, pageSize: Int) {
@@ -166,145 +54,6 @@ class HomeViewModel : BaseViewModel() {
) )
} }
fun getPartyBanner() {
safeLaunch(
onError = {
_partyBannerLiveData.value = null
},
block = {
val result = HomeModel.getHotRoom()
var bannerInfoList: List<BannerInfo>?
bannerInfoList = result?.find { it.isBanner }?.bannerVoList
if (bannerInfoList == null) {
bannerInfoList = HomeModel.getPlayRoom()?.find { it.isBanner }?.bannerVoList
}
_partyBannerLiveData.value = bannerInfoList
}
)
}
fun getGameRoom(pageNum: Int, pageSize: Int) {
safeLaunch(
onError = {
_gameRoomLiveData.value = ListResult.failed(pageNum)
},
block = {
val result = HomeModel.getGameRoom(pageNum, pageSize)
_gameRoomLiveData.value = ListResult.success(result, pageNum)
}
)
}
fun fastPickGameRoom(mgId: Long? = null) {
safeLaunch(
onError = {
it.message.toast()
StatisticManager.Instance()
.onEvent(
StatisticsProtocol.EVENT_USERCENTER_QUICK_ENTRYSUCCESS_CLICK,
"个人中心快捷进房点击未匹配成功"
)
},
block = {
val homeRoomInfo = HomeModel.fastPickGameRoom(mgId)
if (homeRoomInfo?.isPick == true) {
_pickRoomLiveData.value = homeRoomInfo
} else if (homeRoomInfo?.isNeedOpenSelfRoom == true) {
_openGameRoomLiveData.value = mgId
}
}
)
}
fun getCollectRoom(pageNum: Int, pageSize: Int) {
safeLaunch(
onError = {
_collectLiveData.value = ListResult.failed(pageNum)
_emptyLiveData.value = true
},
block = {
if (pageNum == 1) {
val concernsRooms = async(Dispatchers.IO) {
try {
HomeModel.getConcernsRoom()
} catch (e: Throwable) {
null
}
}
val collectRooms = async(Dispatchers.IO) {
try {
HomeModel.getCollectRoom(pageNum, pageSize)
} catch (e: Throwable) {
null
}
}
_concernsLiveData.value = concernsRooms.await()
val collectList = collectRooms.await()
if (collectList == null) {
_collectLiveData.value = ListResult.failed(pageNum)
} else {
_collectLiveData.value =
ListResult.success(collectList.fansRoomList, pageNum)
}
_emptyLiveData.value = _concernsLiveData.value.isNullOrEmpty() &&
_collectLiveData.value?.data.isNullOrEmpty()
} else {
val result = HomeModel.getCollectRoom(pageNum, pageSize)
_collectLiveData.value = ListResult.success(result?.fansRoomList, pageNum)
}
}
)
}
fun requestSingleRoomSortList() {
safeLaunch(
onError = {
//保证最少有一个推荐tab,防止出现空白页
_singleRoomSortInfoLiveData.value =
ListResult.success(listOf(SingleRoomSortInfo(null, "推荐")), 1)
},
block = {
val result = HomeModel.requestSingleRoomSortList()
val fullResult = ArrayList<SingleRoomSortInfo>()
fullResult.add(SingleRoomSortInfo(null, "推荐"))
result?.let { fullResult.addAll(it) }
_singleRoomSortInfoLiveData.value = ListResult.success(fullResult, 1)
}
)
}
fun getHomeSingleAnchorList() {
safeLaunch(
onError = {
_singleAnchorHomeLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getHomeSingleAnchorList()
_singleAnchorHomeLiveData.value = ListResult.success(
if ((result?.size ?: 0) > 4) {
result?.subList(0, 4)
} else {
result
}, 1
)
}
)
}
fun requestHomeLiveTopInfo() {
safeLaunch(
onError = {
_homeLiveTopInfoLiveData.value = null
},
block = {
_homeLiveTopInfoLiveData.value = HomeModel.requestHomeLiveTopInfo()
}
)
}
fun requestAnchorInfo() { fun requestAnchorInfo() {
safeLaunch( safeLaunch(
onError = { onError = {
@@ -316,67 +65,4 @@ class HomeViewModel : BaseViewModel() {
) )
} }
fun getPartyRecommendRoomList() {
safeLaunch(
onError = {
_partyRecommendRoomLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getPartyRecommendRoomList(
AuthModel.get().currentUid.toString(),
CommunityConstant.VERSION_VALID_TYPE
)
_partyRecommendRoomLiveData.value = ListResult.success(result, 1)
}
)
}
fun getPartyRecommendRoomMoreList() {
safeLaunch(
onError = {
_partyRecommendRoomMoreLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getPartyRecommendRoomMoreList()
_partyRecommendRoomMoreLiveData.value = ListResult.success(result, 1)
}
)
}
fun getServiceGiftRecord() {
safeLaunch(
onError = {
_giftServiceLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getServiceGiftRecord()
_giftServiceLiveData.value = ListResult.success(result, 1)
}
)
}
fun getNewFriendList(gender: Int? = null, gameId: Long? = null) {
safeLaunch(
onError = {
_newFriendLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getNewFriendList(gender, gameId)
_newFriendLiveData.value = ListResult.success(result, 1)
}
)
}
fun getFriendRecommendMore() {
safeLaunch(
onError = {
friendRecommendModeLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getFriendRecommendMore()
friendRecommendModeLiveData.value = ListResult.success(result, 1)
}
)
}
} }

View File

@@ -0,0 +1,56 @@
package com.nnbc123.app.home
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.nnbc123.app.base.BaseViewModel
import com.nnbc123.core.bean.response.ListResult
import com.nnbc123.core.home.bean.BannerInfo
import com.nnbc123.core.home.bean.GiftServiceMsgVo
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.model.HomeModel
import com.nnbc123.core.utils.toast
/**
* Created by Max on 2023/12/27 10:18
* Desc:
**/
class PartyViewModel : BaseViewModel() {
private val _giftServiceLiveData = MutableLiveData<ListResult<GiftServiceMsgVo>>()
val giftServiceLiveData: LiveData<ListResult<GiftServiceMsgVo>> = _giftServiceLiveData
private val _bannerLiveData = MutableLiveData<List<BannerInfo>>()
val bannerLiveData: LiveData<List<BannerInfo>> = _bannerLiveData
private val _resourceJumpLiveData = MutableLiveData<HomeRoomInfo?>()
val resourceJumpLiveData: LiveData<HomeRoomInfo?> = _resourceJumpLiveData
fun getResourceJumpInfo(id: Long) {
safeLaunch(
onError = {
_resourceJumpLiveData.value = null
it.message.toast()
},
block = {
_resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0)
}
)
}
fun getBannerInfo() {
safeLaunch {
_bannerLiveData.value = HomeModel.getHomeBanner("1")
}
}
fun getServiceGiftRecord() {
safeLaunch(
onError = {
_giftServiceLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getServiceGiftRecord()
_giftServiceLiveData.value = ListResult.success(result, 1)
}
)
}
}

View File

@@ -3,12 +3,16 @@ package com.nnbc123.app.home.fragment.home.friends
import android.view.Gravity import android.view.Gravity
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import com.chuhai.utils.ktx.singleClick import com.chuhai.utils.ktx.singleClick
import com.nnbc123.app.R import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.base.BaseBindingFragment import com.nnbc123.app.base.BaseBindingFragment
import com.nnbc123.app.databinding.HomeFriendsFragmentBinding import com.nnbc123.app.databinding.HomeFriendsFragmentBinding
import com.nnbc123.app.home.FriendsViewModel
import com.nnbc123.app.home.HomeViewModel import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.HomeFriendsGameTabAdapter import com.nnbc123.app.home.adapter.HomeFriendsGameTabAdapter
import com.nnbc123.app.home.dialog.RecommendRoomDialog
import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity
import com.nnbc123.app.ui.utils.load import com.nnbc123.app.ui.utils.load
import com.nnbc123.app.ui.webview.CommonWebViewActivity import com.nnbc123.app.ui.webview.CommonWebViewActivity
@@ -26,6 +30,7 @@ import com.nnbc123.library.annatation.ActLayoutRes
class FriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() { class FriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
private val homeViewModel: HomeViewModel by activityViewModels() private val homeViewModel: HomeViewModel by activityViewModels()
private val viewModel: FriendsViewModel by activityViewModels()
private val tabAdapter = HomeFriendsGameTabAdapter() private val tabAdapter = HomeFriendsGameTabAdapter()
@@ -44,7 +49,7 @@ class FriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
showFilterGender() showFilterGender()
} }
mBinding.tvRefresh.singleClick { mBinding.tvRefresh.singleClick {
homeViewModel.getNewFriendList(filterGender, filterGameId) viewModel.getNewFriendList(filterGender, filterGameId)
} }
mBinding.refreshLayout.isEnableLoadmore = false mBinding.refreshLayout.isEnableLoadmore = false
mBinding.refreshLayout.isEnableOverScrollBounce = false mBinding.refreshLayout.isEnableOverScrollBounce = false
@@ -64,7 +69,7 @@ class FriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
tabAdapter.selectItem(position) tabAdapter.selectItem(position)
refreshListData() refreshListData()
} }
homeViewModel.gameTabLiveData.observe(viewLifecycleOwner) viewModel.gameTabLiveData.observe(viewLifecycleOwner)
{ {
if (!it.isNullOrEmpty()) { if (!it.isNullOrEmpty()) {
tabAdapter.setNewData(it) tabAdapter.setNewData(it)
@@ -75,10 +80,27 @@ class FriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
private fun initResource() { private fun initResource() {
mBinding.ivResourceMatch.singleClick { mBinding.ivResourceMatch.singleClick {
dialogManager.showProgressDialog(mContext) dialogManager.showProgressDialog(mContext)
homeViewModel.getHomeChatPick() viewModel.getHomeChatPick()
} }
homeViewModel.homeChatPickLiveData.observe(viewLifecycleOwner) { viewModel.resourceJumpLiveData.observe(this)
{
dialogManager.dismissDialog()
it?.let {
if (it.isPick) {
AVRoomActivity.start(context, it.uid)
// StatisticManager.Instance().onEvent(
// "${currMatchClick}_match_success",
// "资源位匹配成功",
// mapOf("user_id" to AuthModel.get().currentUid.toString())
// )
} else {
RecommendRoomDialog.newInstance(it).show(context)
}
}
}
viewModel.homeChatPickLiveData.observe(viewLifecycleOwner) {
dialogManager.dismissDialog() dialogManager.dismissDialog()
it?.let { it?.let {
if (it.isNotEmpty()) { if (it.isNotEmpty()) {
@@ -105,7 +127,7 @@ class FriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
else -> { else -> {
dialogManager.showProgressDialog(mContext) dialogManager.showProgressDialog(mContext)
homeViewModel.getResourceJumpInfo(item.id) viewModel.getResourceJumpInfo(item.id)
} }
} }
} }
@@ -159,13 +181,13 @@ class FriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
private fun loadData() { private fun loadData() {
if (homeViewModel.gameTabLiveData.value.isNullOrEmpty()) { if (homeViewModel.gameTabLiveData.value.isNullOrEmpty()) {
homeViewModel.getHomeGameTab() viewModel.getHomeGameTab()
} }
homeViewModel.getHomeResource() homeViewModel.getHomeResource()
refreshListData() refreshListData()
} }
private fun refreshListData() { private fun refreshListData() {
homeViewModel.getNewFriendList(filterGender, filterGameId) viewModel.getNewFriendList(filterGender, filterGameId)
} }
} }

View File

@@ -5,12 +5,14 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.chuhai.utils.UiUtils import com.chuhai.utils.UiUtils
import com.nnbc123.app.R import com.nnbc123.app.R
import com.nnbc123.app.base.BaseBindingFragment import com.nnbc123.app.base.BaseBindingFragment
import com.nnbc123.app.databinding.HomeFriendsListFragmentBinding import com.nnbc123.app.databinding.HomeFriendsListFragmentBinding
import com.nnbc123.app.home.FriendsViewModel
import com.nnbc123.app.home.HomeViewModel import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.HomeFriendsUserAdapter import com.nnbc123.app.home.adapter.HomeFriendsUserAdapter
import com.nnbc123.app.ui.user.UserInfoActivity import com.nnbc123.app.ui.user.UserInfoActivity
@@ -27,7 +29,7 @@ import kotlin.random.Random
@ActLayoutRes(R.layout.home_friends_list_fragment) @ActLayoutRes(R.layout.home_friends_list_fragment)
class FriendsListFragment : BaseBindingFragment<HomeFriendsListFragmentBinding>() { class FriendsListFragment : BaseBindingFragment<HomeFriendsListFragmentBinding>() {
private val adapter = HomeFriendsUserAdapter() private val adapter = HomeFriendsUserAdapter()
private val homeViewModel: HomeViewModel by activityViewModels() private val viewModel: FriendsViewModel by activityViewModels()
private var rvDelegate: RVDelegate<UserInfo>? = null private var rvDelegate: RVDelegate<UserInfo>? = null
private var headerEmptyView: View? = null private var headerEmptyView: View? = null
private val recommendTitleView get() = headerEmptyView?.findViewById<View>(R.id.layout_title) private val recommendTitleView get() = headerEmptyView?.findViewById<View>(R.id.layout_title)
@@ -91,10 +93,10 @@ class FriendsListFragment : BaseBindingFragment<HomeFriendsListFragmentBinding>(
} }
private fun initObserve() { private fun initObserve() {
homeViewModel.newFriendLiveData.observe(this) { viewModel.newFriendLiveData.observe(this) {
if (it.data.isNullOrEmpty()) { if (it.data.isNullOrEmpty()) {
headerEmptyView?.isVisible = true headerEmptyView?.isVisible = true
val list = homeViewModel.friendRecommendModeLiveData.value?.data?.toMutableList() val list = viewModel.friendRecommendModeLiveData.value?.data?.toMutableList()
recommendTitleView?.isVisible = !list.isNullOrEmpty() recommendTitleView?.isVisible = !list.isNullOrEmpty()
adapter.setNewData(list) adapter.setNewData(list)
} else { } else {
@@ -102,7 +104,7 @@ class FriendsListFragment : BaseBindingFragment<HomeFriendsListFragmentBinding>(
rvDelegate?.loadData(it) rvDelegate?.loadData(it)
} }
} }
homeViewModel.friendRecommendModeLiveData.observe(this) { viewModel.friendRecommendModeLiveData.observe(this) {
if (headerEmptyView?.isVisible == true) { if (headerEmptyView?.isVisible == true) {
recommendTitleView?.isVisible = !it.data.isNullOrEmpty() recommendTitleView?.isVisible = !it.data.isNullOrEmpty()
adapter.setNewData(it.data?.toMutableList()) adapter.setNewData(it.data?.toMutableList())
@@ -112,8 +114,8 @@ class FriendsListFragment : BaseBindingFragment<HomeFriendsListFragmentBinding>(
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
if (homeViewModel.friendRecommendModeLiveData.value?.data.isNullOrEmpty()) { if (viewModel.friendRecommendModeLiveData.value?.data.isNullOrEmpty()) {
homeViewModel.getFriendRecommendMore() viewModel.getFriendRecommendMore()
} }
} }
} }

View File

@@ -3,22 +3,26 @@ package com.nnbc123.app.home.fragment.home.party
import android.os.Bundle import android.os.Bundle
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.chuhai.utils.ktx.singleClick import com.chuhai.utils.ktx.singleClick
import com.nnbc123.app.R import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.base.BaseActivity
import com.nnbc123.app.base.BaseBindingFragment import com.nnbc123.app.base.BaseBindingFragment
import com.nnbc123.app.databinding.HomePartyFragmentBinding import com.nnbc123.app.databinding.HomePartyFragmentBinding
import com.nnbc123.app.home.HomeViewModel import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.game_room.GameRoomActivity import com.nnbc123.app.game_room.GameRoomActivity
import com.nnbc123.app.home.PartyViewModel
import com.nnbc123.app.home.adapter.HomePartyMessageAdapter import com.nnbc123.app.home.adapter.HomePartyMessageAdapter
import com.nnbc123.app.home.dialog.RecommendRoomDialog import com.nnbc123.app.home.dialog.RecommendRoomDialog
import com.nnbc123.app.home.helper.BannerHelper import com.nnbc123.app.home.helper.BannerHelper
import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity import com.nnbc123.app.home.helper.OpenRoomHelper
import com.nnbc123.app.ui.utils.load import com.nnbc123.app.ui.utils.load
import com.nnbc123.app.ui.webview.CommonWebViewActivity import com.nnbc123.app.ui.webview.CommonWebViewActivity
import com.nnbc123.core.auth.AuthModel import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.home.event.RefreshHomeDataEvent import com.nnbc123.core.home.event.RefreshHomeDataEvent
import com.nnbc123.core.room.bean.RoomInfo
import com.nnbc123.core.statistic.StatisticManager import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.library.annatation.ActLayoutRes import com.nnbc123.library.annatation.ActLayoutRes
@@ -34,6 +38,7 @@ import org.greenrobot.eventbus.ThreadMode
class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() { class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
private val homeViewModel: HomeViewModel by activityViewModels() private val homeViewModel: HomeViewModel by activityViewModels()
private val viewModel: PartyViewModel by activityViewModels()
//仅埋点使用,不影响业务逻辑 //仅埋点使用,不影响业务逻辑
private val abcArray = arrayOf("A", "B", "C", "D") private val abcArray = arrayOf("A", "B", "C", "D")
@@ -69,8 +74,8 @@ class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
private fun loadData() { private fun loadData() {
homeViewModel.getHomeResource() homeViewModel.getHomeResource()
homeViewModel.getBannerInfo() viewModel.getBannerInfo()
homeViewModel.getServiceGiftRecord() viewModel.getServiceGiftRecord()
} }
private fun initHotMessage() { private fun initHotMessage() {
@@ -86,7 +91,7 @@ class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
} }
} }
}.create() }.create()
homeViewModel.giftServiceLiveData.observe(viewLifecycleOwner) { viewModel.giftServiceLiveData.observe(viewLifecycleOwner) {
if (it.isSuccess && !it.data.isNullOrEmpty()) { if (it.isSuccess && !it.data.isNullOrEmpty()) {
mBinding.hotMessage.isVisible = true mBinding.hotMessage.isVisible = true
mBinding.hotMessage.refreshData(it.data) mBinding.hotMessage.refreshData(it.data)
@@ -99,15 +104,6 @@ class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
GameRoomActivity.start(requireContext()) GameRoomActivity.start(requireContext())
} }
homeViewModel.homeChatPickLiveData.observe(viewLifecycleOwner) {
dialogManager.dismissDialog()
it?.let {
if (it.isNotEmpty()) {
NimP2PMessageActivity.start(context, it)
}
}
}
homeViewModel.resourceLiveData.observe(this) { homeViewModel.resourceLiveData.observe(this) {
if (it.isNullOrEmpty()) { if (it.isNullOrEmpty()) {
mBinding.groupResource.isVisible = false mBinding.groupResource.isVisible = false
@@ -136,14 +132,14 @@ class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
else -> { else -> {
dialogManager.showProgressDialog(mContext) dialogManager.showProgressDialog(mContext)
homeViewModel.getResourceJumpInfo(it[i].id) viewModel.getResourceJumpInfo(it[i].id)
} }
} }
} }
} }
} }
homeViewModel.resourceJumpLiveData.observe(this) viewModel.resourceJumpLiveData.observe(this)
{ {
dialogManager.dismissDialog() dialogManager.dismissDialog()
it?.let { it?.let {
@@ -162,7 +158,7 @@ class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
} }
private fun initBanner() { private fun initBanner() {
homeViewModel.bannerLiveData.observe(this) { viewModel.bannerLiveData.observe(this) {
BannerHelper.setBanner(mBinding.rollView, it) { _, _ -> BannerHelper.setBanner(mBinding.rollView, it) { _, _ ->
StatisticManager.Instance() StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOME_BANNER_CLICK, "首页_banner") .onEvent(StatisticsProtocol.EVENT_HOME_BANNER_CLICK, "首页_banner")

View File

@@ -661,7 +661,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
private void loadChatLimit(boolean sessionIsEmpty) { private void loadChatLimit(boolean sessionIsEmpty) {
if (ignoreChatLimit) { if (ignoreChatLimit) {
Log.d("MAAAX", "#ignore"); Log.d(TAG, "#ignore");
return; return;
} }
IMCustomModel.get().getPrivateChatLimit(sessionId).subscribe(((privateChatLimitInfo, throwable) -> { IMCustomModel.get().getPrivateChatLimit(sessionId).subscribe(((privateChatLimitInfo, throwable) -> {