feat webSalix in webView refs #7636

This commit is contained in:
Sergio De la torre 2024-07-31 12:08:31 +02:00
parent d2cd21f2eb
commit c87707a0ca
1 changed files with 45 additions and 3 deletions

View File

@ -10,13 +10,18 @@ import android.view.GestureDetector
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.webkit.WebChromeClient import android.webkit.WebChromeClient
import android.webkit.WebResourceRequest
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.ImageView import android.widget.ImageView
import androidx.activity.OnBackPressedCallback
import androidx.activity.OnBackPressedDispatcher
import androidx.core.view.GestureDetectorCompat import androidx.core.view.GestureDetectorCompat
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R import es.verdnatura.R
import es.verdnatura.databinding.FragmentWebBinding import es.verdnatura.databinding.FragmentWebBinding
import es.verdnatura.presentation.base.BaseFragment import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnBackPressedListener
import es.verdnatura.presentation.common.OnOptionsSelectedListener import es.verdnatura.presentation.common.OnOptionsSelectedListener
import es.verdnatura.presentation.common.ToolBarAdapterTooltip import es.verdnatura.presentation.common.ToolBarAdapterTooltip
import es.verdnatura.presentation.view.component.CustomDialog import es.verdnatura.presentation.view.component.CustomDialog
@ -26,10 +31,12 @@ import kotlin.math.abs
@Suppress("UNUSED_ANONYMOUS_PARAMETER") @Suppress("UNUSED_ANONYMOUS_PARAMETER")
class WebFragment( class WebFragment(
var entryPoint: String = "" var entryPoint: String = ""
) : BaseFragment<FragmentWebBinding, ControladorViewModel>(ControladorViewModel::class) { ) : BaseFragment<FragmentWebBinding, ControladorViewModel>(ControladorViewModel::class),
OnBackPressedListener {
private lateinit var gestureDetector: GestureDetectorCompat private lateinit var gestureDetector: GestureDetectorCompat
override fun getLayoutId(): Int = R.layout.fragment_web override fun getLayoutId(): Int = R.layout.fragment_web
private lateinit var customDialog: CustomDialog private lateinit var customDialog: CustomDialog
private lateinit var backDispatcher: OnBackPressedDispatcher
companion object { companion object {
fun newInstance(entryPoint: String) = WebFragment(entryPoint) fun newInstance(entryPoint: String) = WebFragment(entryPoint)
@ -45,6 +52,19 @@ class WebFragment(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().onBackPressedDispatcher.addCallback(
viewLifecycleOwner,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (!onBackPressedHandled()) {
isEnabled = false
requireActivity().onBackPressedDispatcher
}
}
})
gestureDetector = GestureDetectorCompat( gestureDetector = GestureDetectorCompat(
requireActivity(), requireActivity(),
object : GestureDetector.SimpleOnGestureListener() { object : GestureDetector.SimpleOnGestureListener() {
@ -59,7 +79,7 @@ class WebFragment(
val deltaAbsX = abs(deltaX) val deltaAbsX = abs(deltaX)
val deltaAbsY = abs(deltaY) val deltaAbsY = abs(deltaY)
if (deltaAbsX > deltaAbsY) { if (deltaAbsX > deltaAbsY) {
if (velocityX > 2000 && velocityY < 500 && velocityY>=0) { if (velocityX > 2000 && velocityY < 500 && velocityY >= 0) {
binding.webView.goBack() binding.webView.goBack()
return true return true
@ -78,7 +98,9 @@ class WebFragment(
@SuppressLint("ClickableViewAccessibility", "SetJavaScriptEnabled") @SuppressLint("ClickableViewAccessibility", "SetJavaScriptEnabled")
private fun setWeb() { private fun setWeb() {
binding.webView.webChromeClient = WebChromeClient() binding.webView.webChromeClient = WebChromeClient(
)
val webSettings = binding.webView.settings val webSettings = binding.webView.settings
webSettings.javaScriptEnabled = true webSettings.javaScriptEnabled = true
@ -93,6 +115,15 @@ class WebFragment(
binding.webView.setOnTouchListener { v, event -> binding.webView.setOnTouchListener { v, event ->
gestureDetector.onTouchEvent(event) gestureDetector.onTouchEvent(event)
} }
binding.webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
binding.webView.loadUrl(request?.url.toString())
return true
}
}
val dataScanned = JSONObject(entryPoint) val dataScanned = JSONObject(entryPoint)
@ -159,5 +190,16 @@ class WebFragment(
} }
} }
override fun onBackPressedHandled(): Boolean {
if (binding.webView.canGoBack()) {
binding.webView.goBack()
}else{
ma.onMyBackPressed()
}
return true
}
} }