mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	delay mainpage
This commit is contained in:
		
							parent
							
								
									020b3b7472
								
							
						
					
					
						commit
						61fb302a37
					
				
					 3 changed files with 37 additions and 3 deletions
				
			
		|  | @ -381,7 +381,16 @@ abstract class MainAPI { | |||
|     open var storedCredentials: String? = null | ||||
|     open var canBeOverridden: Boolean = true | ||||
| 
 | ||||
|     //open val uniqueId : Int by lazy { this.name.hashCode() } // in case of duplicate providers you can have a shared id | ||||
|     /** if this is turned on then it will request the homepage one after the other, | ||||
|     used to delay if they block many request at the same time*/ | ||||
|     open var sequentialMainPage : Boolean = false | ||||
|     /** in milliseconds, this can be used to add more delay between homepage requests | ||||
|      *  on first load if sequentialMainPage is turned on */ | ||||
|     open var sequentialMainPageDelay : Long = 0L | ||||
|     /** in milliseconds, this can be used to add more delay between homepage requests when scrolling */ | ||||
|     open var sequentialMainPageScrollDelay : Long = 0L | ||||
|     /** used to keep track when last homepage request was in unixtime ms */ | ||||
|     var lastHomepageRequest : Long = 0L | ||||
| 
 | ||||
|     open var lang = "en" // ISO_639_1 check SubtitleHelper | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,10 +1,12 @@ | |||
| package com.lagradost.cloudstream3.ui | ||||
| 
 | ||||
| import com.lagradost.cloudstream3.* | ||||
| import com.lagradost.cloudstream3.APIHolder.unixTimeMS | ||||
| import com.lagradost.cloudstream3.mvvm.Resource | ||||
| import com.lagradost.cloudstream3.mvvm.logError | ||||
| import com.lagradost.cloudstream3.mvvm.safeApiCall | ||||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import kotlinx.coroutines.delay | ||||
| 
 | ||||
| class APIRepository(val api: MainAPI) { | ||||
|     companion object { | ||||
|  | @ -62,12 +64,33 @@ class APIRepository(val api: MainAPI) { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     suspend fun waitForHomeDelay() { | ||||
|         val delta = api.sequentialMainPageScrollDelay + api.lastHomepageRequest - unixTimeMS | ||||
|         if(delta < 0) return | ||||
|         delay(delta) | ||||
|     } | ||||
| 
 | ||||
|     suspend fun getMainPage(page: Int, nameIndex: Int? = null): Resource<List<HomePageResponse?>> { | ||||
|         return safeApiCall { | ||||
|             api.lastHomepageRequest = unixTimeMS | ||||
| 
 | ||||
|             nameIndex?.let { api.mainPage.getOrNull(it) }?.let { data -> | ||||
|                 listOf(api.getMainPage(page, MainPageRequest(data.name, data.data))) | ||||
|             } ?: api.mainPage.apmap { data -> | ||||
|                 api.getMainPage(page, MainPageRequest(data.name, data.data)) | ||||
|             } ?: run { | ||||
|                 if (api.sequentialMainPage) { | ||||
|                     var first = true | ||||
|                     api.mainPage.map { data -> | ||||
|                         if (!first) // dont want to sleep on first request | ||||
|                             delay(api.sequentialMainPageDelay) | ||||
|                         first = false | ||||
| 
 | ||||
|                         api.getMainPage(page, MainPageRequest(data.name, data.data)) | ||||
|                     } | ||||
|                 } else { | ||||
|                     api.mainPage.apmap { data -> | ||||
|                         api.getMainPage(page, MainPageRequest(data.name, data.data)) | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -162,6 +162,8 @@ class HomeViewModel : ViewModel() { | |||
|         lock += name | ||||
| 
 | ||||
|         repo?.apply { | ||||
|             waitForHomeDelay() | ||||
| 
 | ||||
|             expandable[name]?.let { current -> | ||||
|                 debugAssert({ !current.hasNext }) { | ||||
|                     "Expand called when not needed" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue