diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/MoreFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/MoreFragment.kt index da28ba7a..f6ec93bc 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/MoreFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/MoreFragment.kt @@ -142,7 +142,7 @@ class MoreFragment : Fragment() { lateinit var dialog: AlertDialog val terminateDialog = MaterialAlertDialogBuilder(requireContext()) - terminateDialog.setTitle(getString(R.string.confirm_terminate)) + terminateDialog.setTitle(getString(R.string.kill_app)) val dialogView = layoutInflater.inflate(R.layout.dialog_terminate_app, null) val checkbox = dialogView.findViewById(R.id.doNotShowAgain) terminateDialog.setView(dialogView) diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt index d8904e51..cd1450bf 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt @@ -53,11 +53,16 @@ class WebViewActivity : BaseActivity() { private lateinit var cookies: String private lateinit var webViewClient: AccompanistWebViewClient private lateinit var preferences: SharedPreferences + + private var incognito: Boolean = false + @SuppressLint("SetJavaScriptEnabled") public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.webview_activity) url = intent.extras!!.getString("url")!! + incognito = intent.extras!!.getBoolean("incognito", false) + cookiesViewModel = ViewModelProvider(this)[CookieViewModel::class.java] lifecycleScope.launch { val appbar = findViewById(R.id.webview_appbarlayout) @@ -69,6 +74,8 @@ class WebViewActivity : BaseActivity() { toolbar.menu.children.firstOrNull { it.itemId == R.id.get_data_sync_id }?.isVisible = false } + toolbar.menu.children.firstOrNull { it.itemId == R.id.incognito }?.isChecked = incognito + toolbar.setOnMenuItemClickListener { m : MenuItem -> when(m.itemId) { R.id.get_data_sync_id -> { @@ -77,16 +84,8 @@ class WebViewActivity : BaseActivity() { } } R.id.incognito -> { - m.isChecked = !m.isChecked - webView.apply { - if (this == null) { - m.isChecked = false - return@apply - } - - configureIncognito(this, m.isChecked) - this.reload() - } + intent.putExtra("incognito", !incognito) + recreate() } R.id.desktop -> { m.isChecked = !m.isChecked @@ -164,35 +163,6 @@ class WebViewActivity : BaseActivity() { } - - private fun configureIncognito(webView: WebView, incognito: Boolean) { - if (!incognito) { - webView.settings.run { - cacheMode = WebSettings.LOAD_DEFAULT - domStorageEnabled = true - setGeolocationEnabled(true) - } - }else { - webView.settings.run { - cacheMode = WebSettings.LOAD_NO_CACHE - domStorageEnabled = false - setGeolocationEnabled(false) - } - } - - if (incognito) { - WebStorage.getInstance().deleteAllData() - } - - if (incognito) { - webView.apply { - clearHistory() - clearCache(true) - clearFormData() - } - } - } - private fun configureDesktopMode(webView: WebView, desktop: Boolean) { webView.settings.apply { if (desktop) { @@ -225,8 +195,22 @@ class WebViewActivity : BaseActivity() { captureBackPresses = false, factory = { context -> WebView(context).apply { settings.run { + if (!incognito) { + cacheMode = WebSettings.LOAD_DEFAULT + domStorageEnabled = true + setGeolocationEnabled(true) + }else { + cacheMode = WebSettings.LOAD_NO_CACHE + domStorageEnabled = false + setGeolocationEnabled(false) + WebStorage.getInstance().deleteAllData() + + this@apply.clearHistory() + this@apply.clearCache(true) + this@apply.clearFormData() + } + javaScriptEnabled = true - domStorageEnabled = true javaScriptCanOpenWindowsAutomatically = true if (Build.VERSION.SDK_INT >= 26) { safeBrowsingEnabled = true diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/webview/PoTokenWebViewLoginActivity.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/webview/PoTokenWebViewLoginActivity.kt index 14f17930..67b75b8c 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/webview/PoTokenWebViewLoginActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/generateyoutubepotokens/webview/PoTokenWebViewLoginActivity.kt @@ -63,7 +63,8 @@ class PoTokenWebViewLoginActivity : BaseActivity() { lifecycleScope.launch { val appbar = findViewById(R.id.webview_appbarlayout) toolbar = appbar.findViewById(R.id.webviewToolbar) - + //hide incognito + toolbar.menu.findItem(1).isVisible = false toolbar.setOnMenuItemClickListener { m : MenuItem -> when(m.itemId) { R.id.get_data_sync_id -> { @@ -71,13 +72,6 @@ class PoTokenWebViewLoginActivity : BaseActivity() { UiUtil.copyToClipboard(id.replace("\"", ""), this@PoTokenWebViewLoginActivity) } } - R.id.incognito -> { - m.isChecked = !m.isChecked - webView.apply { - configureIncognito(this, m.isChecked) - this.reload() - } - } R.id.desktop -> { m.isChecked = !m.isChecked webView.apply { @@ -173,34 +167,6 @@ class PoTokenWebViewLoginActivity : BaseActivity() { } - private fun configureIncognito(webView: WebView, incognito: Boolean) { - if (!incognito) { - webView.settings.run { - cacheMode = WebSettings.LOAD_DEFAULT - domStorageEnabled = true - setGeolocationEnabled(true) - } - }else { - webView.settings.run { - cacheMode = WebSettings.LOAD_NO_CACHE - domStorageEnabled = false - setGeolocationEnabled(false) - } - } - - if (incognito) { - WebStorage.getInstance().deleteAllData() - } - - if (incognito) { - webView.apply { - clearHistory() - clearCache(true) - clearFormData() - } - } - } - private fun configureDesktopMode(webView: WebView, desktop: Boolean) { webView.settings.apply { if (desktop) { @@ -232,11 +198,17 @@ class PoTokenWebViewLoginActivity : BaseActivity() { .padding(paddingValues) .fillMaxSize(), captureBackPresses = false, factory = { context -> + WebStorage.getInstance().deleteAllData() WebView(context).apply { webView = this + clearHistory() + clearCache(true) + clearFormData() settings.run { + cacheMode = WebSettings.LOAD_NO_CACHE + domStorageEnabled = false + setGeolocationEnabled(false) javaScriptEnabled = true - domStorageEnabled = true javaScriptCanOpenWindowsAutomatically = true if (Build.VERSION.SDK_INT >= 26) { safeBrowsingEnabled = true diff --git a/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt index 6abd2d9e..9f89c5a8 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt @@ -21,6 +21,7 @@ import com.deniscerri.ytdl.database.models.YoutubeGeneratePoTokenItem import com.deniscerri.ytdl.database.models.YoutubePlayerClientItem import com.deniscerri.ytdl.database.viewmodel.DownloadViewModel import com.deniscerri.ytdl.database.viewmodel.ResultViewModel +import com.deniscerri.ytdl.util.Extensions.getIDFromYoutubeURL import com.deniscerri.ytdl.util.Extensions.getIntByAny import com.deniscerri.ytdl.util.Extensions.getStringByAny import com.deniscerri.ytdl.util.Extensions.isURL @@ -731,9 +732,8 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co }else{ isPlaylistItem = true YoutubeDLRequest(downloadItem.playlistURL!!).apply { - if(downloadItem.playlistIndex == null){ - val matchPortion = downloadItem.url.split("/").last().split("=").last().split("&").first() - request.addOption("--match-filter", "id~='${matchPortion}'") + if(downloadItem.playlistIndex == null || downloadItem.url.isYoutubeURL()){ + request.addOption("--match-filter", "id~='${downloadItem.url.getIDFromYoutubeURL()}'") }else{ request.addOption("-I", "${downloadItem.playlistIndex!!}:${downloadItem.playlistIndex}") } diff --git a/app/src/main/res/layout/dialog_terminate_app.xml b/app/src/main/res/layout/dialog_terminate_app.xml index 4b23ae94..a283fb86 100644 --- a/app/src/main/res/layout/dialog_terminate_app.xml +++ b/app/src/main/res/layout/dialog_terminate_app.xml @@ -8,6 +8,7 @@ @@ -16,6 +17,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="bold" + android:minWidth="0dp" android:text="@string/dont_ask_again"/> \ No newline at end of file