general fixes webview activity
This commit is contained in:
parent
206277e704
commit
92f3bdb3cd
9 changed files with 37 additions and 37 deletions
|
|
@ -435,10 +435,10 @@
|
||||||
</activity-alias>
|
</activity-alias>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.more.WebViewActivity"
|
android:name=".ui.more.cookies.WebViewActivity"
|
||||||
android:configChanges="locale"
|
android:configChanges="locale"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:launchMode="singleTask"
|
android:excludeFromRecents="true"
|
||||||
android:parentActivityName=".MainActivity"
|
android:parentActivityName=".MainActivity"
|
||||||
android:windowSoftInputMode="adjustResize">
|
android:windowSoftInputMode="adjustResize">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
|
@ -452,7 +452,7 @@
|
||||||
android:name=".ui.more.settings.advanced.generateyoutubepotokens.webview.PoTokenWebViewLoginActivity"
|
android:name=".ui.more.settings.advanced.generateyoutubepotokens.webview.PoTokenWebViewLoginActivity"
|
||||||
android:configChanges="locale"
|
android:configChanges="locale"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:launchMode="singleTask"
|
android:excludeFromRecents="true"
|
||||||
android:noHistory="true"
|
android:noHistory="true"
|
||||||
android:parentActivityName=".ui.more.settings.SettingsActivity"
|
android:parentActivityName=".ui.more.settings.SettingsActivity"
|
||||||
android:windowSoftInputMode="adjustResize">
|
android:windowSoftInputMode="adjustResize">
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ import com.deniscerri.ytdl.BuildConfig
|
||||||
import com.deniscerri.ytdl.database.DBManager
|
import com.deniscerri.ytdl.database.DBManager
|
||||||
import com.deniscerri.ytdl.database.models.CookieItem
|
import com.deniscerri.ytdl.database.models.CookieItem
|
||||||
import com.deniscerri.ytdl.database.repository.CookieRepository
|
import com.deniscerri.ytdl.database.repository.CookieRepository
|
||||||
import com.deniscerri.ytdl.ui.more.WebViewActivity
|
import com.deniscerri.ytdl.ui.more.cookies.WebViewActivity
|
||||||
import com.deniscerri.ytdl.util.FileUtil
|
import com.deniscerri.ytdl.util.FileUtil
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ import com.deniscerri.ytdl.database.viewmodel.HistoryViewModel
|
||||||
import com.deniscerri.ytdl.database.viewmodel.ResultViewModel
|
import com.deniscerri.ytdl.database.viewmodel.ResultViewModel
|
||||||
import com.deniscerri.ytdl.ui.adapter.HomeAdapter
|
import com.deniscerri.ytdl.ui.adapter.HomeAdapter
|
||||||
import com.deniscerri.ytdl.ui.adapter.SearchSuggestionsAdapter
|
import com.deniscerri.ytdl.ui.adapter.SearchSuggestionsAdapter
|
||||||
import com.deniscerri.ytdl.ui.more.WebViewActivity
|
import com.deniscerri.ytdl.ui.more.cookies.WebViewActivity
|
||||||
import com.deniscerri.ytdl.util.Extensions.enableFastScroll
|
import com.deniscerri.ytdl.util.Extensions.enableFastScroll
|
||||||
import com.deniscerri.ytdl.util.Extensions.isURL
|
import com.deniscerri.ytdl.util.Extensions.isURL
|
||||||
import com.deniscerri.ytdl.util.NotificationUtil
|
import com.deniscerri.ytdl.util.NotificationUtil
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ import com.deniscerri.ytdl.database.viewmodel.HistoryViewModel
|
||||||
import com.deniscerri.ytdl.database.viewmodel.ResultViewModel
|
import com.deniscerri.ytdl.database.viewmodel.ResultViewModel
|
||||||
import com.deniscerri.ytdl.receiver.ShareActivity
|
import com.deniscerri.ytdl.receiver.ShareActivity
|
||||||
import com.deniscerri.ytdl.ui.BaseActivity
|
import com.deniscerri.ytdl.ui.BaseActivity
|
||||||
import com.deniscerri.ytdl.ui.more.WebViewActivity
|
import com.deniscerri.ytdl.ui.more.cookies.WebViewActivity
|
||||||
import com.deniscerri.ytdl.util.UiUtil
|
import com.deniscerri.ytdl.util.UiUtil
|
||||||
import com.facebook.shimmer.ShimmerFrameLayout
|
import com.facebook.shimmer.ShimmerFrameLayout
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.deniscerri.ytdl.ui.more
|
package com.deniscerri.ytdl.ui.more.cookies
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context.INPUT_METHOD_SERVICE
|
import android.content.Context
|
||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
|
|
@ -32,6 +32,7 @@ import com.deniscerri.ytdl.R
|
||||||
import com.deniscerri.ytdl.database.models.CookieItem
|
import com.deniscerri.ytdl.database.models.CookieItem
|
||||||
import com.deniscerri.ytdl.database.viewmodel.CookieViewModel
|
import com.deniscerri.ytdl.database.viewmodel.CookieViewModel
|
||||||
import com.deniscerri.ytdl.ui.adapter.CookieAdapter
|
import com.deniscerri.ytdl.ui.adapter.CookieAdapter
|
||||||
|
import com.deniscerri.ytdl.ui.more.cookies.WebViewActivity
|
||||||
import com.deniscerri.ytdl.util.Extensions.enableTextHighlight
|
import com.deniscerri.ytdl.util.Extensions.enableTextHighlight
|
||||||
import com.deniscerri.ytdl.util.FileUtil
|
import com.deniscerri.ytdl.util.FileUtil
|
||||||
import com.deniscerri.ytdl.util.UiUtil
|
import com.deniscerri.ytdl.util.UiUtil
|
||||||
|
|
@ -51,7 +52,6 @@ import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
|
||||||
class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
|
class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
|
||||||
private lateinit var recyclerView: RecyclerView
|
private lateinit var recyclerView: RecyclerView
|
||||||
private lateinit var listAdapter: CookieAdapter
|
private lateinit var listAdapter: CookieAdapter
|
||||||
|
|
@ -136,7 +136,7 @@ class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
|
||||||
deleteDialog.setNegativeButton(getString(R.string.cancel)) { dialogInterface: DialogInterface, _: Int -> dialogInterface.cancel() }
|
deleteDialog.setNegativeButton(getString(R.string.cancel)) { dialogInterface: DialogInterface, _: Int -> dialogInterface.cancel() }
|
||||||
deleteDialog.setPositiveButton(getString(R.string.ok)) { _: DialogInterface?, _: Int ->
|
deleteDialog.setPositiveButton(getString(R.string.ok)) { _: DialogInterface?, _: Int ->
|
||||||
cookiesViewModel.deleteAll()
|
cookiesViewModel.deleteAll()
|
||||||
kotlin.runCatching {
|
runCatching {
|
||||||
FileUtil.getCookieFile(requireContext(), true){
|
FileUtil.getCookieFile(requireContext(), true){
|
||||||
File(it).apply { writeText("") }
|
File(it).apply { writeText("") }
|
||||||
}
|
}
|
||||||
|
|
@ -235,7 +235,7 @@ class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
|
||||||
getCookies.isEnabled = urlEditText.text.isNotEmpty()
|
getCookies.isEnabled = urlEditText.text.isNotEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
val imm = mainActivity.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
|
val imm = mainActivity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||||
urlEditText.postDelayed({
|
urlEditText.postDelayed({
|
||||||
urlEditText.requestFocus()
|
urlEditText.requestFocus()
|
||||||
imm.showSoftInput(urlEditText, 0)
|
imm.showSoftInput(urlEditText, 0)
|
||||||
|
|
@ -262,7 +262,7 @@ class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
|
||||||
|
|
||||||
override fun onItemEnabledChanged(cookieItem: CookieItem, isEnabled: Boolean) {
|
override fun onItemEnabledChanged(cookieItem: CookieItem, isEnabled: Boolean) {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
withContext(Dispatchers.IO){
|
withContext(Dispatchers.IO) {
|
||||||
cookiesViewModel.changeCookieEnabledState(cookieItem.id, isEnabled)
|
cookiesViewModel.changeCookieEnabledState(cookieItem.id, isEnabled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -280,7 +280,7 @@ class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
|
||||||
|
|
||||||
private var simpleCallback: ItemTouchHelper.SimpleCallback =
|
private var simpleCallback: ItemTouchHelper.SimpleCallback =
|
||||||
object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT ) {
|
object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT ) {
|
||||||
override fun onMove(recyclerView: RecyclerView,viewHolder: RecyclerView.ViewHolder,target: RecyclerView.ViewHolder
|
override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder
|
||||||
): Boolean {
|
): Boolean {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.deniscerri.ytdl.ui.more
|
package com.deniscerri.ytdl.ui.more.cookies
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
|
|
@ -9,7 +9,6 @@ import android.webkit.CookieManager
|
||||||
import android.webkit.WebSettings
|
import android.webkit.WebSettings
|
||||||
import android.webkit.WebStorage
|
import android.webkit.WebStorage
|
||||||
import android.webkit.WebView
|
import android.webkit.WebView
|
||||||
import android.webkit.WebViewDatabase
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
|
@ -19,29 +18,22 @@ import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.ComposeView
|
import androidx.compose.ui.platform.ComposeView
|
||||||
import androidx.core.view.children
|
import androidx.core.view.children
|
||||||
import androidx.core.view.forEach
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import com.deniscerri.ytdl.R
|
import com.deniscerri.ytdl.R
|
||||||
import com.deniscerri.ytdl.database.models.CookieItem
|
|
||||||
import com.deniscerri.ytdl.database.viewmodel.CookieViewModel
|
import com.deniscerri.ytdl.database.viewmodel.CookieViewModel
|
||||||
import com.deniscerri.ytdl.ui.BaseActivity
|
import com.deniscerri.ytdl.ui.BaseActivity
|
||||||
import com.deniscerri.ytdl.util.Extensions.isYoutubeURL
|
import com.deniscerri.ytdl.util.Extensions.isYoutubeURL
|
||||||
import com.deniscerri.ytdl.util.UiUtil
|
|
||||||
import com.google.accompanist.web.AccompanistWebChromeClient
|
import com.google.accompanist.web.AccompanistWebChromeClient
|
||||||
import com.google.accompanist.web.AccompanistWebViewClient
|
import com.google.accompanist.web.AccompanistWebViewClient
|
||||||
import com.google.accompanist.web.WebView
|
|
||||||
import com.google.accompanist.web.rememberWebViewState
|
import com.google.accompanist.web.rememberWebViewState
|
||||||
import com.google.android.material.appbar.AppBarLayout
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
import com.google.android.material.appbar.MaterialToolbar
|
import com.google.android.material.appbar.MaterialToolbar
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.google.android.material.snackbar.Snackbar
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.hamcrest.Description
|
|
||||||
|
|
||||||
|
|
||||||
class WebViewActivity : BaseActivity() {
|
class WebViewActivity : BaseActivity() {
|
||||||
private lateinit var cookiesViewModel: CookieViewModel
|
private lateinit var cookiesViewModel: CookieViewModel
|
||||||
|
|
@ -109,7 +101,7 @@ class WebViewActivity : BaseActivity() {
|
||||||
override fun onPageFinished(view: WebView?, url: String?) {
|
override fun onPageFinished(view: WebView?, url: String?) {
|
||||||
webView = view
|
webView = view
|
||||||
super.onPageFinished(view, url)
|
super.onPageFinished(view, url)
|
||||||
kotlin.runCatching {
|
runCatching {
|
||||||
toolbar.title = view?.title ?: ""
|
toolbar.title = view?.title ?: ""
|
||||||
cookies = cookieManager.getCookie(view?.url)
|
cookies = cookieManager.getCookie(view?.url)
|
||||||
}
|
}
|
||||||
|
|
@ -124,9 +116,9 @@ class WebViewActivity : BaseActivity() {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
cookiesViewModel.getCookiesFromDB(url).getOrNull()?.let {
|
cookiesViewModel.getCookiesFromDB(url).getOrNull()?.let {
|
||||||
kotlin.runCatching {
|
runCatching {
|
||||||
cookiesViewModel.insert(
|
cookiesViewModel.insert(
|
||||||
CookieItem(
|
com.deniscerri.ytdl.database.models.CookieItem(
|
||||||
0,
|
0,
|
||||||
url,
|
url,
|
||||||
it,
|
it,
|
||||||
|
|
@ -154,8 +146,12 @@ class WebViewActivity : BaseActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
cookieManager = CookieManager.getInstance()
|
cookieManager = CookieManager.getInstance()
|
||||||
cookieManager.removeAllCookies(null)
|
|
||||||
cookieManager.flush()
|
if (savedInstanceState == null) {
|
||||||
|
cookieManager.removeAllCookies(null)
|
||||||
|
cookieManager.flush()
|
||||||
|
}
|
||||||
|
|
||||||
webViewCompose.apply {
|
webViewCompose.apply {
|
||||||
setContent { WebViewView() }
|
setContent { WebViewView() }
|
||||||
}
|
}
|
||||||
|
|
@ -186,20 +182,23 @@ class WebViewActivity : BaseActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Scaffold(modifier = Modifier.fillMaxSize()) { paddingValues ->
|
Scaffold(modifier = Modifier.Companion.fillMaxSize()) { paddingValues ->
|
||||||
WebView(
|
com.google.accompanist.web.WebView(
|
||||||
state = rememberWebViewState(url), client = webViewClient, chromeClient = webViewChromeClient,
|
state = rememberWebViewState(url),
|
||||||
modifier = Modifier
|
client = webViewClient,
|
||||||
|
chromeClient = webViewChromeClient,
|
||||||
|
modifier = Modifier.Companion
|
||||||
.padding(paddingValues)
|
.padding(paddingValues)
|
||||||
.fillMaxSize(),
|
.fillMaxSize(),
|
||||||
captureBackPresses = false, factory = { context ->
|
captureBackPresses = false,
|
||||||
|
factory = { context ->
|
||||||
WebView(context).apply {
|
WebView(context).apply {
|
||||||
settings.run {
|
settings.run {
|
||||||
if (!incognito) {
|
if (!incognito) {
|
||||||
cacheMode = WebSettings.LOAD_DEFAULT
|
cacheMode = WebSettings.LOAD_DEFAULT
|
||||||
domStorageEnabled = true
|
domStorageEnabled = true
|
||||||
setGeolocationEnabled(true)
|
setGeolocationEnabled(true)
|
||||||
}else {
|
} else {
|
||||||
cacheMode = WebSettings.LOAD_NO_CACHE
|
cacheMode = WebSettings.LOAD_NO_CACHE
|
||||||
domStorageEnabled = false
|
domStorageEnabled = false
|
||||||
setGeolocationEnabled(false)
|
setGeolocationEnabled(false)
|
||||||
|
|
@ -215,7 +214,8 @@ class WebViewActivity : BaseActivity() {
|
||||||
if (Build.VERSION.SDK_INT >= 26) {
|
if (Build.VERSION.SDK_INT >= 26) {
|
||||||
safeBrowsingEnabled = true
|
safeBrowsingEnabled = true
|
||||||
}
|
}
|
||||||
preferences.edit().putString("useragent_header", userAgentString).apply()
|
preferences.edit().putString("useragent_header", userAgentString)
|
||||||
|
.apply()
|
||||||
}
|
}
|
||||||
cookieManager.setAcceptCookie(true)
|
cookieManager.setAcceptCookie(true)
|
||||||
cookieManager.setAcceptThirdPartyCookies(this, true)
|
cookieManager.setAcceptThirdPartyCookies(this, true)
|
||||||
|
|
@ -118,7 +118,7 @@ class MainSettingsFragment : PreferenceFragmentCompat() {
|
||||||
}
|
}
|
||||||
|
|
||||||
val updating = findPreference<Preference>("updating")
|
val updating = findPreference<Preference>("updating")
|
||||||
updating?.summary = "${getString(R.string.update_ytdl)}$separator ${getString(R.string.format_source)}$separator ${getString(R.string.update_app)}"
|
updating?.summary = "${getString(R.string.update_ytdl)}$separator ${getString(R.string.update_app)}"
|
||||||
updating?.setOnPreferenceClickListener {
|
updating?.setOnPreferenceClickListener {
|
||||||
navController.navigate(R.id.action_mainSettingsFragment_to_updateSettingsFragment)
|
navController.navigate(R.id.action_mainSettingsFragment_to_updateSettingsFragment)
|
||||||
true
|
true
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ import com.deniscerri.ytdl.R
|
||||||
import com.deniscerri.ytdl.database.models.CookieItem
|
import com.deniscerri.ytdl.database.models.CookieItem
|
||||||
import com.deniscerri.ytdl.database.models.YoutubeGeneratePoTokenItem
|
import com.deniscerri.ytdl.database.models.YoutubeGeneratePoTokenItem
|
||||||
import com.deniscerri.ytdl.database.models.YoutubePoTokenItem
|
import com.deniscerri.ytdl.database.models.YoutubePoTokenItem
|
||||||
import com.deniscerri.ytdl.ui.more.WebViewActivity
|
import com.deniscerri.ytdl.ui.more.cookies.WebViewActivity
|
||||||
import com.deniscerri.ytdl.ui.more.settings.SettingsActivity
|
import com.deniscerri.ytdl.ui.more.settings.SettingsActivity
|
||||||
import com.deniscerri.ytdl.ui.more.settings.advanced.generateyoutubepotokens.webview.PoTokenWebViewLoginActivity
|
import com.deniscerri.ytdl.ui.more.settings.advanced.generateyoutubepotokens.webview.PoTokenWebViewLoginActivity
|
||||||
import com.deniscerri.ytdl.util.Extensions.enableTextHighlight
|
import com.deniscerri.ytdl.util.Extensions.enableTextHighlight
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@
|
||||||
tools:layout="@layout/fragment_terminal" />
|
tools:layout="@layout/fragment_terminal" />
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/cookiesFragment"
|
android:id="@+id/cookiesFragment"
|
||||||
android:name="com.deniscerri.ytdl.ui.more.CookiesFragment"
|
android:name="com.deniscerri.ytdl.ui.more.cookies.CookiesFragment"
|
||||||
tools:layout="@layout/fragment_cookies"
|
tools:layout="@layout/fragment_cookies"
|
||||||
android:label="CookiesFragment" />
|
android:label="CookiesFragment" />
|
||||||
<fragment
|
<fragment
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue