Merge pull request #194 from TouchInstinct/add/web_view_callback
Add/web view callback
This commit is contained in:
commit
4df67ae21c
|
|
@ -43,6 +43,11 @@ open class BaseWebView @JvmOverloads constructor(
|
|||
|
||||
var isRedirectEnable = false
|
||||
|
||||
/**
|
||||
* If you need to do some action on url click inside WebView, just assign this parameter and disable isRedirectEnable
|
||||
**/
|
||||
var openBrowserOnRedirectInsideWebView: ((String?, WebView) -> Unit)? = null
|
||||
|
||||
init {
|
||||
binding.pullToRefresh.isEnabled = isPullToRefreshEnable
|
||||
binding.apply {
|
||||
|
|
@ -105,6 +110,10 @@ open class BaseWebView @JvmOverloads constructor(
|
|||
onCookieLoaded?.invoke(cookies)
|
||||
}
|
||||
|
||||
override fun actionOnRedirectInsideWebView(webView: WebView, url: String?) {
|
||||
openBrowserOnRedirectInsideWebView?.invoke(url, webView)
|
||||
}
|
||||
|
||||
fun setBaseWebViewClient(isSSlPinningEnable: Boolean = false) {
|
||||
binding.webView.webViewClient = BaseWebViewClient(this, isSSlPinningEnable)
|
||||
binding.webView.webChromeClient = BaseChromeWebViewClient(onJsConfirm, onJsAlert, onJsPrompt, onJsError)
|
||||
|
|
|
|||
|
|
@ -55,7 +55,12 @@ open class BaseWebViewClient(private val callback: WebViewCallback, private val
|
|||
}
|
||||
|
||||
override fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean {
|
||||
return !callback.onOverrideUrlLoading(url) && view.originalUrl != null
|
||||
return if (!callback.onOverrideUrlLoading(url) && view.originalUrl != null) {
|
||||
callback.actionOnRedirectInsideWebView(webView = view, url = url)
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
|
||||
|
|
@ -82,10 +87,10 @@ open class BaseWebViewClient(private val callback: WebViewCallback, private val
|
|||
private fun String?.processCookies(): Map<String, String> {
|
||||
val cookiesMap = mutableMapOf<String, String>()
|
||||
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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package ru.touchin.roboswag.webview.web_view
|
||||
|
||||
import android.webkit.WebView
|
||||
|
||||
interface WebViewCallback {
|
||||
|
||||
fun onStateChanged(newState: WebViewLoadingState)
|
||||
|
|
@ -8,4 +10,6 @@ interface WebViewCallback {
|
|||
|
||||
fun onPageCookiesLoaded(cookies: Map<String, String>?)
|
||||
|
||||
fun actionOnRedirectInsideWebView(webView: WebView, url: String?)
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue