AquaStream/app/src/main/java/com/lagradost/cloudstream3/ui/WebviewFragment.kt

77 lines
2.7 KiB
Kotlin
Raw Normal View History

2022-08-15 23:24:19 +00:00
package com.lagradost.cloudstream3.ui
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.JavascriptInterface
2022-08-15 23:24:19 +00:00
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
2022-08-21 18:14:26 +00:00
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
2022-08-15 23:24:19 +00:00
import androidx.navigation.fragment.findNavController
import com.lagradost.cloudstream3.MainActivity
2022-08-15 23:24:19 +00:00
import com.lagradost.cloudstream3.R
import com.lagradost.cloudstream3.USER_AGENT
2022-08-21 18:14:26 +00:00
import com.lagradost.cloudstream3.network.WebViewResolver
2022-08-15 23:24:19 +00:00
import com.lagradost.cloudstream3.utils.AppUtils.loadRepository
import kotlinx.android.synthetic.main.fragment_webview.*
class WebviewFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val url = arguments?.getString(WEBVIEW_URL) ?: "".also {
findNavController().popBackStack()
}
web_view.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
val requestUrl = request?.url.toString()
val performedAction = MainActivity.handleAppIntentUrl(activity, requestUrl, true)
if (performedAction) {
2022-08-15 23:24:19 +00:00
findNavController().popBackStack()
return true
}
return super.shouldOverrideUrlLoading(view, request)
}
}
WebViewResolver.webViewUserAgent = web_view.settings.userAgentString
web_view.addJavascriptInterface(RepoApi(activity), "RepoApi")
2022-08-15 23:24:19 +00:00
web_view.settings.javaScriptEnabled = true
web_view.settings.userAgentString = USER_AGENT
2022-08-15 23:24:19 +00:00
web_view.settings.domStorageEnabled = true
// WebView.setWebContentsDebuggingEnabled(true)
2022-08-21 18:14:26 +00:00
2022-08-15 23:24:19 +00:00
web_view.loadUrl(url)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_webview, container, false)
}
companion object {
private const val WEBVIEW_URL = "webview_url"
fun newInstance(webViewUrl: String) =
Bundle().apply {
putString(WEBVIEW_URL, webViewUrl)
}
}
private class RepoApi(val activity: FragmentActivity?) {
@JavascriptInterface
fun installRepo(repoUrl: String) {
activity?.loadRepository(repoUrl)
}
}
2022-08-15 23:24:19 +00:00
}