diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt index fcf1ee5bf2..809f0c1a05 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt @@ -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() { - 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() { + 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) }