Browse Source

Check settings restoration before warning the user

merge-requests/2298/head
Nicolas Pomepuy 1 year ago
parent
commit
a6da59b74d
  1. 17
      application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt
  2. 12
      application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt

17
application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt

@ -26,6 +26,7 @@ import android.app.Activity
import android.app.AlertDialog
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.util.Log
@ -36,6 +37,7 @@ import android.view.View
import android.widget.ImageView
import androidx.appcompat.view.ActionMode
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
@ -72,6 +74,7 @@ import org.videolan.vlc.R
import org.videolan.vlc.StartActivity
import org.videolan.vlc.gui.audio.AudioBrowserFragment
import org.videolan.vlc.gui.browser.BaseBrowserFragment
import org.videolan.vlc.gui.browser.EXTRA_MRL
import org.videolan.vlc.gui.dialogs.NotificationPermissionManager
import org.videolan.vlc.gui.dialogs.PermissionListDialog
import org.videolan.vlc.gui.dialogs.UPDATE_DATE
@ -184,13 +187,19 @@ class MainActivity : ContentActivity(),
}
if (!settings.getBoolean(KEY_OBSOLETE_RESTORE_FILE_WARNED, false)) {
lifecycleScope.launch {
val file = File(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY + EXPORT_SETTINGS_FILE)
val fileExists = withContext(Dispatchers.IO) {
File(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY + EXPORT_SETTINGS_FILE).exists()
file.exists()
}
if (!fileExists) return@launch
UiTools.snackerConfirm(this@MainActivity, getString(R.string.obsolete_restore_settings), confirmMessage = R.string.ok, indefinite = true) {
lifecycleScope.launch {
PreferencesActivity.launchWithPref(this@MainActivity, "export_settings")
//check if file is restorable
try {
PreferenceParser.checkRestoreFile(file.path.toUri())
} catch (_: Exception) {
UiTools.snackerConfirm(this@MainActivity, getString(R.string.obsolete_restore_settings), confirmMessage = R.string.ok, indefinite = true) {
lifecycleScope.launch {
PreferencesActivity.launchWithPref(this@MainActivity, "export_settings")
}
}
}
}

12
application/vlc-android/src/org/videolan/vlc/gui/preferences/search/PreferenceParser.kt

@ -468,6 +468,18 @@ object PreferenceParser {
}
}
suspend fun checkRestoreFile(file: Uri)= withContext(Dispatchers.IO) {
file.path?.let {
val changedPrefs = FileUtils.getStringFromFile(it)
val moshi = Moshi.Builder().build()
val adapter: JsonAdapter<SettingsBackup> = moshi.adapter(SettingsBackup::class.java)
val savedSettings = adapter.fromJson(changedPrefs)
if (savedSettings?.settings == null || savedSettings.version == 0) throw IllegalStateException("Invalid file")
}
}
/**
* Restore the preferences from a file
*

Loading…
Cancel
Save