Merge branch 'fix-GHZS-1966' into 'dev'

fix: 首页轮播图样式改版-前端部分—0331测试(0406测试2) https://jira.shanqu.cc/browse/GHZS-1966

See merge request halo/android/assistant-android!882
This commit is contained in:
叶子维
2023-04-06 15:34:29 +08:00

View File

@ -118,7 +118,6 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) {
mHomeRecommends.addAll(it.homeRecommend)
mHomeContents.addAll(it.homeContent)
mHomeSubSlides.addAll(it.homeSubSlide)
getHomeSubSlideDiscoverGame()
transformRawDataIntoItemDataWithThrottle(mHomeContents)
mContentPage = 2
loadStatus.postValue(LoadStatus.INIT_LOADED)
@ -388,28 +387,30 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) {
}
}
private fun getHomeSubSlideDiscoverGame(callback: (() -> Unit)? = null) {
private fun getHomeSubSlideDiscoverGame() {
if (mHomeSubSlides.isNotEmpty()) {
val firstCardRepeatCount = (mHomeSlideFirstCardPosition / mHomeSubSlides.size) + 1
val secondCardRepeatCount = ((mHomeSlideFirstCardPosition + 1) / mHomeSubSlides.size) + 1
mHomeSubSlides.forEach { homeSubSlide ->
if (homeSubSlide.cardType == "game_explore") {
val newPage = min(firstCardRepeatCount, secondCardRepeatCount)
if (mHomeSlideDiscoveryGamesPage != newPage) {
mApi.getDiscoveryGames(newPage, mapOf("page_size" to 3))
.compose(observableToMain())
.subscribe(object : Response<DiscoveryGameCardEntity>() {
override fun onResponse(response: DiscoveryGameCardEntity?) {
response?.run {
mHomeSubSlideDiscoveryGames = RegionSettingHelper.filterGame(games)
mHomeSlideDiscoveryGamesPage = newPage
}
callback?.invoke()
}
})
}
val newPage = min(firstCardRepeatCount, secondCardRepeatCount)
if (mHomeSlideDiscoveryGamesPage != newPage) {
val paramsMap = if (SPUtils.getBoolean(Constants.SP_DISCOVER_FORCE_REFRESH)) {
mapOf("page_size" to 3, "view" to "sub_slide", "refresh" to "true")
} else {
mapOf("page_size" to 3, "view" to "sub_slide")
}
mApi.getDiscoveryGames(1, paramsMap)
.compose(observableToMain())
.subscribe(object : Response<DiscoveryGameCardEntity>() {
override fun onResponse(response: DiscoveryGameCardEntity?) {
response?.run {
SPUtils.setBoolean(Constants.SP_DISCOVER_FORCE_REFRESH, false)
mHomeSubSlideDiscoveryGames = RegionSettingHelper.filterGame(games)
mHomeSlideDiscoveryGamesPage = newPage
}
transformRawDataIntoItemDataWithThrottle(mHomeContents)
}
})
}
}
}
@ -631,12 +632,9 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) {
var discoveryIndex = -1
mHomeSubSlides.forEachIndexed { index, homeSubSlide ->
if (homeSubSlide.cardType == "game_explore") {
if (mHomeSubSlideDiscoveryGames == null) {
getHomeSubSlideDiscoverGame {
transformRawDataIntoItemDataWithThrottle(mHomeContents)
}
} else if (mHomeSubSlideDiscoveryGames!!.isNotEmpty()) {
homeSubSlide.cardData.games = mHomeSubSlideDiscoveryGames!!
getHomeSubSlideDiscoverGame()
if (!mHomeSubSlideDiscoveryGames.isNullOrEmpty() || mHomeSlideDiscoveryGamesPage == 0) {
mHomeSubSlideDiscoveryGames?.let { homeSubSlide.cardData.games = it }
} else {
isDiscoveryGameEmpty = true
discoveryIndex = index
@ -646,10 +644,12 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) {
}
}
if (isDiscoveryGameEmpty) mHomeSubSlides.removeAt(discoveryIndex)
val firstSubSlidePosition = mHomeSlideFirstCardPosition % mHomeSubSlides.size
val secondSubSlidePosition = (mHomeSlideFirstCardPosition + 1) % mHomeSubSlides.size
slideItem.homeSubSlides =
listOf(mHomeSubSlides[firstSubSlidePosition], mHomeSubSlides[secondSubSlidePosition])
if (mHomeSubSlides.size > 1) {
val firstSubSlidePosition = mHomeSlideFirstCardPosition % mHomeSubSlides.size
val secondSubSlidePosition = (mHomeSlideFirstCardPosition + 1) % mHomeSubSlides.size
slideItem.homeSubSlides =
listOf(mHomeSubSlides[firstSubSlidePosition], mHomeSubSlides[secondSubSlidePosition])
}
}
mSnapshotItemList.add(slideItem)
}