general fixes webview activity

This commit is contained in:
deniscerri 2026-01-01 20:10:55 +01:00
parent 206277e704
commit 92f3bdb3cd
No known key found for this signature in database
GPG key ID: 95C43D517D830350
9 changed files with 37 additions and 37 deletions

View file

@ -435,10 +435,10 @@
</activity-alias>
<activity
android:name=".ui.more.WebViewActivity"
android:name=".ui.more.cookies.WebViewActivity"
android:configChanges="locale"
android:exported="true"
android:launchMode="singleTask"
android:excludeFromRecents="true"
android:parentActivityName=".MainActivity"
android:windowSoftInputMode="adjustResize">
<intent-filter>
@ -452,7 +452,7 @@
android:name=".ui.more.settings.advanced.generateyoutubepotokens.webview.PoTokenWebViewLoginActivity"
android:configChanges="locale"
android:exported="true"
android:launchMode="singleTask"
android:excludeFromRecents="true"
android:noHistory="true"
android:parentActivityName=".ui.more.settings.SettingsActivity"
android:windowSoftInputMode="adjustResize">

View file

@ -16,7 +16,7 @@ import com.deniscerri.ytdl.BuildConfig
import com.deniscerri.ytdl.database.DBManager
import com.deniscerri.ytdl.database.models.CookieItem
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 kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

View file

@ -42,7 +42,7 @@ import com.deniscerri.ytdl.database.viewmodel.HistoryViewModel
import com.deniscerri.ytdl.database.viewmodel.ResultViewModel
import com.deniscerri.ytdl.ui.adapter.HomeAdapter
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.isURL
import com.deniscerri.ytdl.util.NotificationUtil

View file

@ -42,7 +42,7 @@ import com.deniscerri.ytdl.database.viewmodel.HistoryViewModel
import com.deniscerri.ytdl.database.viewmodel.ResultViewModel
import com.deniscerri.ytdl.receiver.ShareActivity
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.facebook.shimmer.ShimmerFrameLayout
import com.google.android.material.bottomsheet.BottomSheetBehavior

View file

@ -1,7 +1,7 @@
package com.deniscerri.ytdl.ui.more
package com.deniscerri.ytdl.ui.more.cookies
import android.annotation.SuppressLint
import android.content.Context.INPUT_METHOD_SERVICE
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
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.viewmodel.CookieViewModel
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.FileUtil
import com.deniscerri.ytdl.util.UiUtil
@ -51,7 +52,6 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
private lateinit var recyclerView: RecyclerView
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.setPositiveButton(getString(R.string.ok)) { _: DialogInterface?, _: Int ->
cookiesViewModel.deleteAll()
kotlin.runCatching {
runCatching {
FileUtil.getCookieFile(requireContext(), true){
File(it).apply { writeText("") }
}
@ -235,7 +235,7 @@ class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
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.requestFocus()
imm.showSoftInput(urlEditText, 0)
@ -262,7 +262,7 @@ class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
override fun onItemEnabledChanged(cookieItem: CookieItem, isEnabled: Boolean) {
lifecycleScope.launch {
withContext(Dispatchers.IO){
withContext(Dispatchers.IO) {
cookiesViewModel.changeCookieEnabledState(cookieItem.id, isEnabled)
}
}
@ -280,7 +280,7 @@ class CookiesFragment : Fragment(), CookieAdapter.OnItemClickListener {
private var simpleCallback: ItemTouchHelper.SimpleCallback =
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 {
return false
}

View file

@ -1,4 +1,4 @@
package com.deniscerri.ytdl.ui.more
package com.deniscerri.ytdl.ui.more.cookies
import android.annotation.SuppressLint
import android.content.SharedPreferences
@ -9,7 +9,6 @@ import android.webkit.CookieManager
import android.webkit.WebSettings
import android.webkit.WebStorage
import android.webkit.WebView
import android.webkit.WebViewDatabase
import android.widget.Toast
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
@ -19,29 +18,22 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.core.view.children
import androidx.core.view.forEach
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceManager
import com.deniscerri.ytdl.R
import com.deniscerri.ytdl.database.models.CookieItem
import com.deniscerri.ytdl.database.viewmodel.CookieViewModel
import com.deniscerri.ytdl.ui.BaseActivity
import com.deniscerri.ytdl.util.Extensions.isYoutubeURL
import com.deniscerri.ytdl.util.UiUtil
import com.google.accompanist.web.AccompanistWebChromeClient
import com.google.accompanist.web.AccompanistWebViewClient
import com.google.accompanist.web.WebView
import com.google.accompanist.web.rememberWebViewState
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.button.MaterialButton
import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.hamcrest.Description
class WebViewActivity : BaseActivity() {
private lateinit var cookiesViewModel: CookieViewModel
@ -109,7 +101,7 @@ class WebViewActivity : BaseActivity() {
override fun onPageFinished(view: WebView?, url: String?) {
webView = view
super.onPageFinished(view, url)
kotlin.runCatching {
runCatching {
toolbar.title = view?.title ?: ""
cookies = cookieManager.getCookie(view?.url)
}
@ -124,9 +116,9 @@ class WebViewActivity : BaseActivity() {
lifecycleScope.launch {
withContext(Dispatchers.IO) {
cookiesViewModel.getCookiesFromDB(url).getOrNull()?.let {
kotlin.runCatching {
runCatching {
cookiesViewModel.insert(
CookieItem(
com.deniscerri.ytdl.database.models.CookieItem(
0,
url,
it,
@ -154,8 +146,12 @@ class WebViewActivity : BaseActivity() {
}
cookieManager = CookieManager.getInstance()
cookieManager.removeAllCookies(null)
cookieManager.flush()
if (savedInstanceState == null) {
cookieManager.removeAllCookies(null)
cookieManager.flush()
}
webViewCompose.apply {
setContent { WebViewView() }
}
@ -186,20 +182,23 @@ class WebViewActivity : BaseActivity() {
}
}
Scaffold(modifier = Modifier.fillMaxSize()) { paddingValues ->
WebView(
state = rememberWebViewState(url), client = webViewClient, chromeClient = webViewChromeClient,
modifier = Modifier
Scaffold(modifier = Modifier.Companion.fillMaxSize()) { paddingValues ->
com.google.accompanist.web.WebView(
state = rememberWebViewState(url),
client = webViewClient,
chromeClient = webViewChromeClient,
modifier = Modifier.Companion
.padding(paddingValues)
.fillMaxSize(),
captureBackPresses = false, factory = { context ->
captureBackPresses = false,
factory = { context ->
WebView(context).apply {
settings.run {
if (!incognito) {
cacheMode = WebSettings.LOAD_DEFAULT
domStorageEnabled = true
setGeolocationEnabled(true)
}else {
} else {
cacheMode = WebSettings.LOAD_NO_CACHE
domStorageEnabled = false
setGeolocationEnabled(false)
@ -215,7 +214,8 @@ class WebViewActivity : BaseActivity() {
if (Build.VERSION.SDK_INT >= 26) {
safeBrowsingEnabled = true
}
preferences.edit().putString("useragent_header", userAgentString).apply()
preferences.edit().putString("useragent_header", userAgentString)
.apply()
}
cookieManager.setAcceptCookie(true)
cookieManager.setAcceptThirdPartyCookies(this, true)

View file

@ -118,7 +118,7 @@ class MainSettingsFragment : PreferenceFragmentCompat() {
}
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 {
navController.navigate(R.id.action_mainSettingsFragment_to_updateSettingsFragment)
true

View file

@ -27,7 +27,7 @@ import com.deniscerri.ytdl.R
import com.deniscerri.ytdl.database.models.CookieItem
import com.deniscerri.ytdl.database.models.YoutubeGeneratePoTokenItem
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.advanced.generateyoutubepotokens.webview.PoTokenWebViewLoginActivity
import com.deniscerri.ytdl.util.Extensions.enableTextHighlight

View file

@ -89,7 +89,7 @@
tools:layout="@layout/fragment_terminal" />
<fragment
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"
android:label="CookiesFragment" />
<fragment