diff --git a/.github/workflows/issue_action.yml b/.github/workflows/issue_action.yml index 79e7766c..a81c4b42 100644 --- a/.github/workflows/issue_action.yml +++ b/.github/workflows/issue_action.yml @@ -18,7 +18,7 @@ jobs: uses: actions-cool/issues-similarity-analysis@v1 with: token: ${{ steps.generate_token.outputs.token }} - filter-threshold: 0.5 + filter-threshold: 0.60 title-excludes: '' comment-title: | ### Your issue looks similar to these issues: diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2debad36..ed2ad5a0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -47,8 +47,8 @@ android { minSdk = 21 targetSdk = 30 - versionCode = 51 - versionName = "3.1.5" + versionCode = 52 + versionName = "3.1.6" resValue("string", "app_version", "${defaultConfig.versionName}${versionNameSuffix ?: ""}") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d722039a..47676059 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,6 +26,7 @@ + Boolean = { false }, ): Pair> { - return resolveUsingWebView( - requestCreator(method, url, referer = referer), requestCallBack - ) + return try { + resolveUsingWebView( + requestCreator(method, url, referer = referer), requestCallBack + ) + } catch (e: java.lang.IllegalArgumentException) { + logError(e) + debugException { "ILLEGAL URL IN resolveUsingWebView!" } + return null to emptyList() + } } /** @@ -129,7 +137,7 @@ class WebViewResolver( println("Loading WebView URL: $webViewUrl") if (interceptUrl.containsMatchIn(webViewUrl)) { - fixedRequest = request.toRequest().also { + fixedRequest = request.toRequest()?.also { requestCallBack(it) } println("Web-view request finished: $webViewUrl") @@ -138,9 +146,9 @@ class WebViewResolver( } if (additionalUrls.any { it.containsMatchIn(webViewUrl) }) { - extraRequestList.add(request.toRequest().also { + request.toRequest()?.also { if (requestCallBack(it)) destroyWebView() - }) + }?.let(extraRequestList::add) } // Suppress image requests as we don't display them anywhere @@ -251,14 +259,19 @@ class WebViewResolver( } -fun WebResourceRequest.toRequest(): Request { +fun WebResourceRequest.toRequest(): Request? { val webViewUrl = this.url.toString() - return requestCreator( - this.method, - webViewUrl, - this.requestHeaders, - ) + // If invalid url then it can crash with + // java.lang.IllegalArgumentException: Expected URL scheme 'http' or 'https' but was 'data' + // At Request.Builder().url(addParamsToUrl(url, params)) + return normalSafeApiCall { + requestCreator( + this.method, + webViewUrl, + this.requestHeaders, + ) + } } fun Response.toWebResourceResponse(): WebResourceResponse {