mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Fix duplicate requests in WebView due to empty reasonPhrase (#2003)
This commit is contained in:
		| @@ -38,6 +38,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co | ||||
| - Fix app bar action tooltips blocking clicks ([@Bartuzen](https://github.com/Bartuzen)) ([#1928](https://github.com/mihonapp/mihon/pull/1928)) | ||||
| - Fix unintended app permissions due to Firebase misconfiguration ([@AntsyLich](https://github.com/AntsyLich)) ([#1960](https://github.com/mihonapp/mihon/pull/1960)) | ||||
| - Fix navigation issue after migrating a duplicated entry from History tab ([@cuong-tran](https://github.com/cuong-tran)) ([#1980](https://github.com/mihonapp/mihon/pull/1980)) | ||||
| - Fix duplicate requests in WebView due to empty reasonPhrase ([@AwkwardPeak7](https://github.com/AwkwardPeak7)) ([#2003](https://github.com/mihonapp/mihon/pull/2003)) | ||||
|  | ||||
| ## [v0.18.0] - 2025-03-20 | ||||
| ### Added | ||||
|   | ||||
| @@ -45,7 +45,9 @@ import eu.kanade.tachiyomi.util.system.getHtml | ||||
| import eu.kanade.tachiyomi.util.system.setDefaultSettings | ||||
| import kotlinx.collections.immutable.persistentListOf | ||||
| import kotlinx.coroutines.launch | ||||
| import logcat.LogPriority | ||||
| import okhttp3.Request | ||||
| import tachiyomi.core.common.util.system.logcat | ||||
| import tachiyomi.i18n.MR | ||||
| import tachiyomi.presentation.core.components.material.Scaffold | ||||
| import tachiyomi.presentation.core.i18n.stringResource | ||||
| @@ -145,16 +147,18 @@ fun WebViewScreenContent( | ||||
|  | ||||
|                     val contentType = response.body.contentType()?.let { "${it.type}/${it.subtype}" } ?: "text/html" | ||||
|                     val contentEncoding = response.body.contentType()?.charset()?.name() ?: "utf-8" | ||||
|                     val message = response.message.ifBlank { WebViewUtil.getMessageFromHttpStatusCode(response.code) } | ||||
|  | ||||
|                     WebResourceResponse( | ||||
|                         contentType, | ||||
|                         contentEncoding, | ||||
|                         response.code, | ||||
|                         response.message, | ||||
|                         message, | ||||
|                         response.headers.associate { it.first to it.second }, | ||||
|                         response.body.byteStream(), | ||||
|                     ) | ||||
|                 } catch (e: Throwable) { | ||||
|                     logcat(priority = LogPriority.ERROR, throwable = e) | ||||
|                     super.shouldInterceptRequest(view, request) | ||||
|                 } | ||||
|             } | ||||
|   | ||||
| @@ -64,6 +64,75 @@ object WebViewUtil { | ||||
|             SYSTEM_SETTINGS_PACKAGE | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun getMessageFromHttpStatusCode(code: Int): String { | ||||
|         return when (code) { | ||||
|             100 -> "Continue" | ||||
|             101 -> "Switching Protocols" | ||||
|             102 -> "Processing" | ||||
|             103 -> "Early Hints" | ||||
|             200 -> "OK" | ||||
|             201 -> "Created" | ||||
|             202 -> "Accepted" | ||||
|             203 -> "Non-Authoritative Information" | ||||
|             204 -> "No Content" | ||||
|             205 -> "Reset Content" | ||||
|             206 -> "Partial Content" | ||||
|             207 -> "Multi-Status" | ||||
|             208 -> "Already Reported" | ||||
|             226 -> "IM Used" | ||||
|             300 -> "Multiple Choices" | ||||
|             301 -> "Moved Permanently" | ||||
|             302 -> "Found" | ||||
|             303 -> "See Other" | ||||
|             304 -> "Not Modified" | ||||
|             305 -> "Use Proxy" | ||||
|             306 -> "unused" | ||||
|             307 -> "Temporary Redirect" | ||||
|             308 -> "Permanent Redirect" | ||||
|             400 -> "Bad Request" | ||||
|             401 -> "Unauthorized" | ||||
|             402 -> "Payment Required" | ||||
|             403 -> "Forbidden" | ||||
|             404 -> "Not Found" | ||||
|             405 -> "Method Not Allowed" | ||||
|             406 -> "Not Acceptable" | ||||
|             407 -> "Proxy Authentication Required" | ||||
|             408 -> "Request Timeout" | ||||
|             409 -> "Conflict" | ||||
|             410 -> "Gone" | ||||
|             411 -> "Length Required" | ||||
|             412 -> "Precondition Failed" | ||||
|             413 -> "Content Too Large" | ||||
|             414 -> "URI Too Long" | ||||
|             415 -> "Unsupported Media Type" | ||||
|             416 -> "Range Not Satisfiable" | ||||
|             417 -> "Expectation Failed" | ||||
|             418 -> "I'm a teapot" | ||||
|             421 -> "Misdirected Request" | ||||
|             422 -> "Unprocessable Content" | ||||
|             423 -> "Locked" | ||||
|             424 -> "Failed Dependency" | ||||
|             425 -> "Too Early" | ||||
|             426 -> "Upgrade Required" | ||||
|             428 -> "Precondition Required" | ||||
|             429 -> "Too Many Requests" | ||||
|             431 -> "Request Header Fields Too Large" | ||||
|             451 -> "Unavailable For Legal Reasons" | ||||
|             500 -> "Internal Server Error" | ||||
|             501 -> "Not Implemented" | ||||
|             502 -> "Bad Gateway" | ||||
|             503 -> "Service Unavailable" | ||||
|             504 -> "Gateway Timeout" | ||||
|             505 -> "HTTP Version Not Supported" | ||||
|             506 -> "Variant Also Negotiates" | ||||
|             507 -> "Insufficient Storage" | ||||
|             508 -> "Loop Detected" | ||||
|             510 -> "Not Extended" | ||||
|             511 -> "Network Authentication Required" | ||||
|             else -> "Unknown" | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| fun WebView.isOutdated(): Boolean { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user