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