diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/downloadLogs/DownloadLogFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/downloadLogs/DownloadLogFragment.kt index 3c4432da..88214bc7 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/downloadLogs/DownloadLogFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/downloadLogs/DownloadLogFragment.kt @@ -22,6 +22,7 @@ import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope +import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceManager import com.deniscerri.ytdl.MainActivity import com.deniscerri.ytdl.R 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 566a6037..a2b2251a 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 @@ -49,6 +49,7 @@ import com.deniscerri.ytdl.database.viewmodel.ResultViewModel import com.deniscerri.ytdl.database.viewmodel.SettingsViewModel import com.deniscerri.ytdl.ui.more.settings.FolderSettingsFragment.Companion.COMMAND_PATH_CODE import com.deniscerri.ytdl.util.FileUtil +import com.deniscerri.ytdl.util.ThemeUtil import com.deniscerri.ytdl.util.UiUtil import com.deniscerri.ytdl.util.UpdateUtil import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -492,27 +493,19 @@ class MainSettingsFragment : PreferenceFragmentCompat() { val builder = MaterialAlertDialogBuilder(requireContext()) builder.setTitle(getString(R.string.restore)) builder.setMessage("${getString(R.string.restore_complete)}\n $restoreDataMessage") + builder.setCancelable(false) builder.setPositiveButton( - getString(R.string.restart) - ) { _: DialogInterface?, _: Int -> - val intent = Intent(requireContext(), MainActivity::class.java) - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - startActivity(intent) - requireActivity().finishAffinity() - if(data.settings != null){ - AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(preferences.getString("app_language", "en"))) - } - activity?.finishAffinity() - } - - // handle the negative button of the alert dialog - builder.setNegativeButton( - getString(R.string.cancel) + getString(R.string.ok) ) { _: DialogInterface?, _: Int -> if(data.settings != null){ - AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(preferences.getString("app_language", "en"))) + val languageValue = preferences.getString("app_language", "en") + if (languageValue == "system") { + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(null)) + }else{ + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(languageValue.toString())) + } } + ThemeUtil.recreateAllActivities() } val dialog = builder.create() diff --git a/app/src/main/java/com/deniscerri/ytdl/util/ThemeUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/ThemeUtil.kt index 5dd97cec..6c37fc24 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/ThemeUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/ThemeUtil.kt @@ -77,6 +77,12 @@ object ThemeUtil { activities.firstOrNull { it.javaClass == MainActivity::class.java }?.recreate() } + fun recreateAllActivities() { + activities.forEach { + it.recreate() + } + } + fun updateThemes() { activities.forEach { updateTheme(it) 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 3a5d1a19..940bac1d 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 @@ -525,6 +525,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co request.applyDefaultOptionsForFetchingData(url) if (url.isYoutubeURL()) { request.setYoutubeExtractorArgs(url) + request.addOption("--extractor-args", "youtube:player_skip=webpage,configs,js;player_client=android,web") } val youtubeDLResponse = YoutubeDL.getInstance().execute(request) @@ -1327,9 +1328,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co } if (downloadItem.videoPreferences.embedSubs) { - if (sharedPreferences.getBoolean("write_subs_when_embed_subs", false) && !downloadItem.videoPreferences.writeSubs && !downloadItem.videoPreferences.writeAutoSubs) { - request.addOption("--write-subs") - request.addOption("--write-auto-subs") + if (sharedPreferences.getBoolean("no_keep_subs", false) && !downloadItem.videoPreferences.writeSubs && !downloadItem.videoPreferences.writeAutoSubs) { request.addOption("--compat-options", "no-keep-subs") } diff --git a/app/src/main/java/com/deniscerri/ytdl/work/DownloadWorker.kt b/app/src/main/java/com/deniscerri/ytdl/work/DownloadWorker.kt index 18b9be1b..d78a681f 100644 --- a/app/src/main/java/com/deniscerri/ytdl/work/DownloadWorker.kt +++ b/app/src/main/java/com/deniscerri/ytdl/work/DownloadWorker.kt @@ -232,8 +232,8 @@ class DownloadWorker( CoroutineScope(Dispatchers.IO).launch { if (logDownloads) { logRepo.update(line, logItem.id) - logString.append("$line\n") } + logString.append("$line\n") } } }.onSuccess { @@ -378,17 +378,17 @@ class DownloadWorker( FileUtil.deleteFile("${cachePath}/${infoJsonName}.info.json") } - if(it.message != null){ - if (logDownloads){ - logRepo.update(it.message!!, logItem.id) - }else{ - logString.append("${it.message}\n") - logItem.content = logString.toString() - val logID = logRepo.insert(logItem) - downloadItem.logID = logID - } + + if (logDownloads){ + logRepo.update(it.message ?: "", logItem.id) + }else{ + logString.append("${it.message ?: it.stackTraceToString()}\n") + logItem.content = logString.toString() + val logID = logRepo.insert(logItem) + downloadItem.logID = logID } + tempFileDir.delete() Log.e(TAG, context.getString(R.string.failed_download), it) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8152f91f..a7ec95a3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -481,4 +481,6 @@ PO Token Web Client PO Token Reverse + Delete subtitle files after embedding + When using both Embed Subtitles and Write Subtitles, don\'t keep the subtitle files after embedding diff --git a/app/src/main/res/xml/processing_preferences.xml b/app/src/main/res/xml/processing_preferences.xml index 09fccb88..09870673 100644 --- a/app/src/main/res/xml/processing_preferences.xml +++ b/app/src/main/res/xml/processing_preferences.xml @@ -179,9 +179,9 @@ android:widgetLayout="@layout/preferece_material_switch" app:defaultValue="true" app:icon="@drawable/ic_subtitles" - app:key="write_subs_when_embed_subs" - app:summary="@string/write_subs_when_embed_subs_summary" - app:title="@string/write_subs_when_embed_subs" /> + app:key="no_keep_subs" + app:summary="@string/no_keep_subs_summary" + app:title="@string/no_keep_subs" />