From 034bad289f0b742c881d87e243e06e9cd449df6d Mon Sep 17 00:00:00 2001 From: Blatzar <46196380+Blatzar@users.noreply.github.com> Date: Sun, 23 Oct 2022 18:59:01 +0200 Subject: [PATCH] Crashfix + version bump --- app/build.gradle | 4 +- .../cloudstream3/network/WebViewResolver.kt | 37 +++++++++++++------ 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index cdc5e652..9df01079 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -35,8 +35,8 @@ android { minSdkVersion 21 targetSdkVersion 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/java/com/lagradost/cloudstream3/network/WebViewResolver.kt b/app/src/main/java/com/lagradost/cloudstream3/network/WebViewResolver.kt index 7b4343d9..9171aed9 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/network/WebViewResolver.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/network/WebViewResolver.kt @@ -7,7 +7,9 @@ import com.lagradost.cloudstream3.AcraApplication import com.lagradost.cloudstream3.AcraApplication.Companion.context import com.lagradost.cloudstream3.USER_AGENT import com.lagradost.cloudstream3.app +import com.lagradost.cloudstream3.mvvm.debugException import com.lagradost.cloudstream3.mvvm.logError +import com.lagradost.cloudstream3.mvvm.normalSafeApiCall import com.lagradost.cloudstream3.utils.Coroutines.main import com.lagradost.cloudstream3.utils.Coroutines.mainWork import com.lagradost.cloudstream3.utils.Coroutines.threadSafeListOf @@ -65,9 +67,15 @@ class WebViewResolver( method: String = "GET", requestCallBack: (Request) -> 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 {