Expose all import/export errors to the user

This commit is contained in:
Stypox 2024-03-30 18:47:20 +01:00
parent 8e192acb63
commit 7da1d30010
No known key found for this signature in database
GPG Key ID: 4BDF1B40A49FDD23
1 changed files with 27 additions and 31 deletions

View File

@ -27,38 +27,34 @@ class ImportExportManager(private val fileLocator: BackupFileLocator) {
fun exportDatabase(preferences: SharedPreferences, file: StoredFileHelper) {
file.create()
ZipOutputStream(SharpOutputStream(file.stream).buffered()).use { outZip ->
try {
// add the database
ZipHelper.addFileToZip(
outZip,
BackupFileLocator.FILE_NAME_DB,
fileLocator.db.path,
)
// add the database
ZipHelper.addFileToZip(
outZip,
BackupFileLocator.FILE_NAME_DB,
fileLocator.db.path,
)
// add the legacy vulnerable serialized preferences (will be removed in the future)
ZipHelper.addFileToZip(
outZip,
BackupFileLocator.FILE_NAME_SERIALIZED_PREFS
) { byteOutput ->
ObjectOutputStream(byteOutput).use { output ->
output.writeObject(preferences.all)
output.flush()
}
// add the legacy vulnerable serialized preferences (will be removed in the future)
ZipHelper.addFileToZip(
outZip,
BackupFileLocator.FILE_NAME_SERIALIZED_PREFS
) { byteOutput ->
ObjectOutputStream(byteOutput).use { output ->
output.writeObject(preferences.all)
output.flush()
}
}
// add the JSON preferences
ZipHelper.addFileToZip(
outZip,
BackupFileLocator.FILE_NAME_JSON_PREFS
) { byteOutput ->
JsonWriter
.indent("")
.on(byteOutput)
.`object`(preferences.all)
.done()
}
} catch (e: Exception) {
Log.e(TAG, "Unable to export serialized settings", e)
// add the JSON preferences
ZipHelper.addFileToZip(
outZip,
BackupFileLocator.FILE_NAME_JSON_PREFS
) { byteOutput ->
JsonWriter
.indent("")
.on(byteOutput)
.`object`(preferences.all)
.done()
}
}
}
@ -133,7 +129,7 @@ class ImportExportManager(private val fileLocator: BackupFileLocator) {
}
if (!editor.commit()) {
Log.e(TAG, "Unable to loadSerializedPrefs")
throw IOException("Unable to commit loadSerializedPrefs")
}
}
}.let { fileExists ->
@ -168,7 +164,7 @@ class ImportExportManager(private val fileLocator: BackupFileLocator) {
}
if (!editor.commit()) {
Log.e(TAG, "Unable to loadJsonPrefs")
throw IOException("Unable to commit loadJsonPrefs")
}
}.let { fileExists ->
if (!fileExists) {