diff --git a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebView.kt b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebView.kt index 130f2c1..16be3d0 100644 --- a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebView.kt +++ b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebView.kt @@ -11,7 +11,6 @@ import android.webkit.ConsoleMessage import android.webkit.WebView import androidx.core.content.withStyledAttributes import androidx.core.widget.TextViewCompat -import ru.touchin.extensions.openBrowser import ru.touchin.extensions.setOnRippleClickListener import ru.touchin.roboswag.views.widget.Switcher import ru.touchin.roboswag.webview.R @@ -43,7 +42,7 @@ open class BaseWebView @JvmOverloads constructor( } var isRedirectEnable = false - var onRedirectInsideWebView: ((String) -> Unit)? = null + var openBrowserOnRedirectInsideWebView: Boolean = true init { binding.pullToRefresh.isEnabled = isPullToRefreshEnable @@ -107,9 +106,7 @@ open class BaseWebView @JvmOverloads constructor( onCookieLoaded?.invoke(cookies) } - override fun onInsideWebViewRedirect(url: String?) { - onRedirectInsideWebView - } + override fun openBrowserOnInsideWebViewRedirect(url: String?):Boolean = openBrowserOnRedirectInsideWebView fun setBaseWebViewClient(isSSlPinningEnable: Boolean = false) { binding.webView.webViewClient = BaseWebViewClient(this, isSSlPinningEnable) diff --git a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebViewClient.kt b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebViewClient.kt index 8bad382..a91ce44 100644 --- a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebViewClient.kt +++ b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/BaseWebViewClient.kt @@ -1,17 +1,10 @@ package ru.touchin.roboswag.webview.web_view -import android.content.Intent import android.graphics.Bitmap -import android.net.Uri import android.net.http.SslError import android.os.Handler import android.os.Looper -import android.webkit.CookieManager -import android.webkit.SslErrorHandler -import android.webkit.WebResourceError -import android.webkit.WebResourceRequest -import android.webkit.WebView -import android.webkit.WebViewClient +import android.webkit.* import androidx.core.os.postDelayed import ru.touchin.extensions.openBrowser @@ -58,8 +51,11 @@ open class BaseWebViewClient(private val callback: WebViewCallback, private val } override fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean { - callback.onInsideWebViewRedirect(url) - return !callback.onOverrideUrlLoading(url) && view.originalUrl != null + if (callback.openBrowserOnInsideWebViewRedirect(url)) { + url?.let { view.context.openBrowser(it) } + } + + return !callback.onOverrideUrlLoading(url) && view.originalUrl != null && callback.openBrowserOnInsideWebViewRedirect(url) } override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) { @@ -86,10 +82,10 @@ open class BaseWebViewClient(private val callback: WebViewCallback, private val private fun String?.processCookies(): Map { val cookiesMap = mutableMapOf() this?.split(";") - ?.forEach { cookie -> - val splittedCookie = cookie.trim().split("=") - cookiesMap[splittedCookie.first()] = splittedCookie.last() - } + ?.forEach { cookie -> + val splittedCookie = cookie.trim().split("=") + cookiesMap[splittedCookie.first()] = splittedCookie.last() + } return cookiesMap } diff --git a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/WebViewCallback.kt b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/WebViewCallback.kt index 68db81f..7c7ad6e 100644 --- a/webview/src/main/java/ru/touchin/roboswag/webview/web_view/WebViewCallback.kt +++ b/webview/src/main/java/ru/touchin/roboswag/webview/web_view/WebViewCallback.kt @@ -1,7 +1,5 @@ package ru.touchin.roboswag.webview.web_view -import androidx.annotation.StringRes - interface WebViewCallback { fun onStateChanged(newState: WebViewLoadingState) @@ -10,6 +8,6 @@ interface WebViewCallback { fun onPageCookiesLoaded(cookies: Map?) - fun onInsideWebViewRedirect(url:String?) + fun openBrowserOnInsideWebViewRedirect(url: String?): Boolean }