Make MangaDex load images more consistently (#8102)
* Make fetching the md@h url less likely to break * import TimeUnit
This commit is contained in:
		
							parent
							
								
									695cdcb57e
								
							
						
					
					
						commit
						955c0891f8
					
				@ -6,7 +6,7 @@ ext {
 | 
				
			|||||||
    extName = 'MangaDex'
 | 
					    extName = 'MangaDex'
 | 
				
			||||||
    pkgNameSuffix = 'all.mangadex'
 | 
					    pkgNameSuffix = 'all.mangadex'
 | 
				
			||||||
    extClass = '.MangaDexFactory'
 | 
					    extClass = '.MangaDexFactory'
 | 
				
			||||||
    extVersionCode = 123
 | 
					    extVersionCode = 124
 | 
				
			||||||
    libVersion = '1.2'
 | 
					    libVersion = '1.2'
 | 
				
			||||||
    containsNsfw = true
 | 
					    containsNsfw = true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -19,6 +19,7 @@ import okhttp3.Request
 | 
				
			|||||||
import org.jsoup.parser.Parser
 | 
					import org.jsoup.parser.Parser
 | 
				
			||||||
import java.util.Date
 | 
					import java.util.Date
 | 
				
			||||||
import java.util.Locale
 | 
					import java.util.Locale
 | 
				
			||||||
 | 
					import java.util.concurrent.TimeUnit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MangaDexHelper() {
 | 
					class MangaDexHelper() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -106,6 +107,12 @@ class MangaDexHelper() {
 | 
				
			|||||||
    // chapter url where we get the token, last request time
 | 
					    // chapter url where we get the token, last request time
 | 
				
			||||||
    private val tokenTracker = hashMapOf<String, Long>()
 | 
					    private val tokenTracker = hashMapOf<String, Long>()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    companion object {
 | 
				
			||||||
 | 
					        val USE_CACHE = CacheControl.Builder()
 | 
				
			||||||
 | 
					            .maxStale(Integer.MAX_VALUE, TimeUnit.SECONDS)
 | 
				
			||||||
 | 
					            .build()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Check the token map to see if the md@home host is still valid
 | 
					    // Check the token map to see if the md@home host is still valid
 | 
				
			||||||
    fun getValidImageUrlForPage(page: Page, headers: Headers, client: OkHttpClient): Request {
 | 
					    fun getValidImageUrlForPage(page: Page, headers: Headers, client: OkHttpClient): Request {
 | 
				
			||||||
        val data = page.url.split(",")
 | 
					        val data = page.url.split(",")
 | 
				
			||||||
@ -123,7 +130,7 @@ class MangaDexHelper() {
 | 
				
			|||||||
                        ) {
 | 
					                        ) {
 | 
				
			||||||
                            CacheControl.FORCE_NETWORK
 | 
					                            CacheControl.FORCE_NETWORK
 | 
				
			||||||
                        } else {
 | 
					                        } else {
 | 
				
			||||||
                            CacheControl.FORCE_CACHE
 | 
					                            USE_CACHE
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    getMdAtHomeUrl(tokenRequestUrl, client, headers, cacheControl)
 | 
					                    getMdAtHomeUrl(tokenRequestUrl, client, headers, cacheControl)
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@ -145,6 +152,14 @@ class MangaDexHelper() {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        val response =
 | 
					        val response =
 | 
				
			||||||
            client.newCall(GET(tokenRequestUrl, headers, cacheControl)).execute()
 | 
					            client.newCall(GET(tokenRequestUrl, headers, cacheControl)).execute()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // This check is for the error that causes pages to fail to load.
 | 
				
			||||||
 | 
					        // It should never be entered, but in case it is, we retry the request.
 | 
				
			||||||
 | 
					        if (response.code == 504) {
 | 
				
			||||||
 | 
					            Log.wtf("MangaDex", "Failed to read cache for \"$tokenRequestUrl\"")
 | 
				
			||||||
 | 
					            return getMdAtHomeUrl(tokenRequestUrl, client, headers, CacheControl.FORCE_NETWORK)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return json.decodeFromString<AtHomeDto>(response.body!!.string()).baseUrl
 | 
					        return json.decodeFromString<AtHomeDto>(response.body!!.string()).baseUrl
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user