From 5b31612462dc46432c038610165ee84dad87abcd Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Sat, 5 Apr 2025 20:27:49 +0200 Subject: [PATCH] fixes --- .../ytdl/ui/more/settings/GeneralSettingsFragment.kt | 7 ++----- .../ytdl/ui/more/settings/MainSettingsFragment.kt | 5 ++++- .../settings/advanced/YoutubePlayerClientFragment.kt | 12 ++++++++---- .../GenerateYoutubePoTokensFragment.kt | 10 ++++++---- .../com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt | 4 ++-- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/GeneralSettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/GeneralSettingsFragment.kt index a6c1ca11..856236c6 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/GeneralSettingsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/GeneralSettingsFragment.kt @@ -286,11 +286,8 @@ class GeneralSettingsFragment : BaseSettingsFragment() { "${s}\n[${entries[entryValues.indexOf(newValue)]}]" } - if (newValue == "yt_api") { - findPreference("api_key")?.isVisible = true - }else if (newValue == "custom") { - findPreference("custom_home_recommendation_url")?.isVisible = true - } + findPreference("api_key")?.isVisible = newValue == "yt_api" + findPreference("custom_home_recommendation_url")?.isVisible = newValue == "custom" 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 c50b310f..566a6037 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 @@ -225,6 +225,9 @@ class MainSettingsFragment : PreferenceFragmentCompat() { addCategory(Intent.CATEGORY_OPENABLE) type = "*/*" } + intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION) + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION) appRestoreResultLauncher.launch(intent) true } @@ -448,7 +451,7 @@ class MainSettingsFragment : PreferenceFragmentCompat() { }.onFailure { it.printStackTrace() - Snackbar.make(requireView(), getString(R.string.couldnt_parse_file), Snackbar.LENGTH_LONG).show() + Snackbar.make(requireView(), it.message.toString(), Snackbar.LENGTH_INDEFINITE).show() } } diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/YoutubePlayerClientFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/YoutubePlayerClientFragment.kt index f6ef6815..850953de 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/YoutubePlayerClientFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/advanced/YoutubePlayerClientFragment.kt @@ -76,8 +76,10 @@ class YoutubePlayerClientFragment : Fragment(), YoutubePlayerClientAdapter.OnIte recyclerView.layoutManager = LinearLayoutManager(context) recyclerView.adapter = listAdapter itemTouchHelper.attachToRecyclerView(recyclerView) - currentListRaw = preferences.getString("youtube_player_clients", "[]")!! - currentList = Gson().fromJson(currentListRaw, Array::class.java).toMutableList() + currentListRaw = preferences.getString("youtube_player_clients", "[]")!!.ifEmpty { "[]" } + currentList = kotlin.runCatching { + Gson().fromJson(currentListRaw, Array::class.java).toMutableList() + }.getOrElse { mutableListOf() } listAdapter.submitList(currentList.toList()) val newClient = view.findViewById(R.id.newClient) @@ -146,8 +148,10 @@ class YoutubePlayerClientFragment : Fragment(), YoutubePlayerClientAdapter.OnIte } }) - val existingConfigsRaw = preferences.getString("youtube_player_clients", "[]") - val existingConfigs = Gson().fromJson(existingConfigsRaw, Array::class.java).toMutableList() + val existingConfigsRaw = preferences.getString("youtube_player_clients", "[]")!!.ifEmpty { "[]" } + val existingConfigs = kotlin.runCatching { + Gson().fromJson(existingConfigsRaw, Array::class.java).toMutableList() + }.getOrElse { mutableListOf() } defaultChips.filter { it.isNotBlank() }.forEach { if (!existingConfigs.any { it2 -> it2.playerClient == it }) { 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 3cd2a802..57727acb 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 @@ -64,10 +64,12 @@ class GenerateYoutubePoTokensFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - configuration = Gson().fromJson( - preferences.getString("youtube_generated_po_tokens", "[]"), - Array::class.java - ).toMutableList() + configuration = kotlin.runCatching { + Gson().fromJson( + preferences.getString("youtube_generated_po_tokens", "[]")!!.ifEmpty { "[]" }, + Array::class.java + ).toMutableList() + }.getOrDefault(mutableListOf()) initWeb() } 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 596d0b14..ab6b6602 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 @@ -1282,7 +1282,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co val playerClients = mutableSetOf() val poTokens = mutableListOf() - val configuredPlayerClientsRaw = sharedPreferences.getString("youtube_player_clients", "[]")!! + val configuredPlayerClientsRaw = sharedPreferences.getString("youtube_player_clients", "[]")!!.ifEmpty { "[]" } kotlin.runCatching { val configuredPlayerClients = Gson().fromJson(configuredPlayerClientsRaw, Array::class.java).toMutableList() @@ -1312,7 +1312,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co extractorArgs.add("data_sync_id=${dataSyncID}") } - val generatedPoTokensRaw = sharedPreferences.getString("youtube_generated_po_tokens", "[]") + val generatedPoTokensRaw = sharedPreferences.getString("youtube_generated_po_tokens", "[]")!!.ifEmpty { "[]" } kotlin.runCatching { val generatedPoTokens = Gson().fromJson(generatedPoTokensRaw,Array::class.java).toMutableList() if (generatedPoTokens.isNotEmpty()) {