diff --git a/mindbox-common/src/androidMain/kotlin/cloud/mindbox/mobile_sdk/inapp/webview/WebViewAndroid.kt b/mindbox-common/src/androidMain/kotlin/cloud/mindbox/mobile_sdk/inapp/webview/WebViewAndroid.kt index b9a9a4a..c11456b 100644 --- a/mindbox-common/src/androidMain/kotlin/cloud/mindbox/mobile_sdk/inapp/webview/WebViewAndroid.kt +++ b/mindbox-common/src/androidMain/kotlin/cloud/mindbox/mobile_sdk/inapp/webview/WebViewAndroid.kt @@ -59,6 +59,7 @@ private class AndroidWebViewController( return@executeOnViewThread } webView.settings.userAgentString = "$currentUserAgent $suffix".trim() + webView.settings.cacheMode = WebSettings.LOAD_NO_CACHE } } @@ -111,6 +112,25 @@ private class AndroidWebViewController( private fun createWebViewClient(): WebViewClient { return object : WebViewClient() { + override fun shouldOverrideUrlLoading( + view: WebView?, + request: WebResourceRequest? + ): Boolean { + return eventListener?.onShouldOverrideUrlLoading( + url = request?.url?.toString(), + isForMainFrame = request?.isForMainFrame, + ) ?: false + } + + @Deprecated("Deprecated in Java") + @Suppress("DEPRECATION") + override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { + val isForMainFrame: Boolean = url == view?.originalUrl + return eventListener?.onShouldOverrideUrlLoading( + url = url, + isForMainFrame = isForMainFrame, + ) ?: false + } override fun onReceivedError( view: WebView?, diff --git a/mindbox-common/src/commonMain/kotlin/cloud/mindbox/mobile_sdk/inapp/webview/WebViewInterfaces.kt b/mindbox-common/src/commonMain/kotlin/cloud/mindbox/mobile_sdk/inapp/webview/WebViewInterfaces.kt index 244ea91..1b05672 100644 --- a/mindbox-common/src/commonMain/kotlin/cloud/mindbox/mobile_sdk/inapp/webview/WebViewInterfaces.kt +++ b/mindbox-common/src/commonMain/kotlin/cloud/mindbox/mobile_sdk/inapp/webview/WebViewInterfaces.kt @@ -29,6 +29,8 @@ public fun interface WebViewJsBridge { public interface WebViewEventListener { public fun onPageFinished(url: String?) + public fun onShouldOverrideUrlLoading(url: String?, isForMainFrame: Boolean?): Boolean = false + public fun onError(error: WebViewError) { } }