From 92f3bdb3cd907e9b61a1e8fe610e9de4fadef626 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:10:55 +0100 Subject: [PATCH] general fixes webview activity --- app/src/main/AndroidManifest.xml | 6 +-- .../database/viewmodel/CookieViewModel.kt | 2 +- .../com/deniscerri/ytdl/ui/HomeFragment.kt | 2 +- .../downloadcard/DownloadBottomSheetDialog.kt | 2 +- .../ui/more/{ => cookies}/CookiesFragment.kt | 14 +++---- .../ui/more/{ => cookies}/WebViewActivity.kt | 42 +++++++++---------- .../ui/more/settings/MainSettingsFragment.kt | 2 +- .../GenerateYoutubePoTokensFragment.kt | 2 +- app/src/main/res/navigation/nav_graph.xml | 2 +- 9 files changed, 37 insertions(+), 37 deletions(-) rename app/src/main/java/com/deniscerri/ytdl/ui/more/{ => cookies}/CookiesFragment.kt (96%) rename app/src/main/java/com/deniscerri/ytdl/ui/more/{ => cookies}/WebViewActivity.kt (91%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index da6f6d0a..1443630e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -435,10 +435,10 @@ @@ -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"> diff --git a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/CookieViewModel.kt b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/CookieViewModel.kt index c3f1996f..9687b82d 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/CookieViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/CookieViewModel.kt @@ -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 diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt index 7b3f5567..8c179524 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/HomeFragment.kt @@ -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 diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadBottomSheetDialog.kt index 5cc4eb74..e1e96aa0 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadBottomSheetDialog.kt @@ -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 diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/CookiesFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/CookiesFragment.kt similarity index 96% rename from app/src/main/java/com/deniscerri/ytdl/ui/more/CookiesFragment.kt rename to app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/CookiesFragment.kt index dd132747..b6056c98 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/CookiesFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/CookiesFragment.kt @@ -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 } diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivity.kt similarity index 91% rename from app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt rename to app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivity.kt index b9862f4f..ddd60564 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/cookies/WebViewActivity.kt @@ -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) diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/MainSettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/MainSettingsFragment.kt index 700544d7..642fefae 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/MainSettingsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/MainSettingsFragment.kt @@ -118,7 +118,7 @@ class MainSettingsFragment : PreferenceFragmentCompat() { } val updating = findPreference("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 diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt index 43e6feba..51c99fac 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/GenerateYoutubePoTokensFragment.kt @@ -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 diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 5363e707..c6c04cde 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -89,7 +89,7 @@ tools:layout="@layout/fragment_terminal" />