Browse Source

Don't show error toasts in MangaController for HTTP 103 responses (closes #6562)

arkon 3 years ago
parent
commit
95b253db09

+ 4 - 2
app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt

@@ -65,7 +65,7 @@ suspend fun Call.await(): Response {
             object : Callback {
                 override fun onResponse(call: Call, response: Response) {
                     if (!response.isSuccessful) {
-                        continuation.resumeWithException(Exception("HTTP error ${response.code}"))
+                        continuation.resumeWithException(HttpException(response.code))
                         return
                     }
 
@@ -96,7 +96,7 @@ fun Call.asObservableSuccess(): Observable<Response> {
     return asObservable().doOnNext { response ->
         if (!response.isSuccessful) {
             response.close()
-            throw Exception("HTTP error ${response.code}")
+            throw HttpException(response.code)
         }
     }
 }
@@ -123,3 +123,5 @@ inline fun <reified T> Response.parseAs(): T {
         return json.decodeFromString(responseBody)
     }
 }
+
+class HttpException(val code: Int) : IllegalStateException("HTTP error $code")

+ 7 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt

@@ -48,6 +48,7 @@ import eu.kanade.tachiyomi.data.track.EnhancedTrackService
 import eu.kanade.tachiyomi.data.track.TrackService
 import eu.kanade.tachiyomi.data.track.model.TrackSearch
 import eu.kanade.tachiyomi.databinding.MangaControllerBinding
+import eu.kanade.tachiyomi.network.HttpException
 import eu.kanade.tachiyomi.source.LocalSource
 import eu.kanade.tachiyomi.source.Source
 import eu.kanade.tachiyomi.source.SourceManager
@@ -473,6 +474,12 @@ class MangaController :
     fun onFetchMangaInfoError(error: Throwable) {
         isRefreshingInfo = false
         updateRefreshing()
+
+        // Ignore early hints "errors" that aren't handled by OkHttp
+        if (error is HttpException && error.code == 103) {
+            return
+        }
+
         activity?.toast(error.message)
     }