WebDav恢复出错时报错

pull/348/head
gedoor 4 years ago
parent aac445c4d6
commit 64e55854f7
  1. 22
      app/src/main/java/io/legado/app/help/storage/WebDavHelp.kt
  2. 29
      app/src/main/java/io/legado/app/ui/config/BackupRestoreUi.kt

@ -51,28 +51,25 @@ object WebDavHelp {
return false
}
@Throws(Exception::class)
private fun getWebDavFileNames(): ArrayList<String> {
val url = rootWebDavUrl
val names = arrayListOf<String>()
if (initWebDav()) {
try {
var files = WebDav(url).listFiles()
files = files.reversed()
for (index: Int in 0 until min(10, files.size)) {
files[index].displayName?.let {
names.add(it)
}
var files = WebDav(url).listFiles()
files = files.reversed()
for (index: Int in 0 until min(10, files.size)) {
files[index].displayName?.let {
names.add(it)
}
} catch (e: Exception) {
return names
}
}
return names
}
suspend fun showRestoreDialog(context: Context): Boolean {
suspend fun showRestoreDialog(context: Context) {
val names = withContext(IO) { getWebDavFileNames() }
return if (names.isNotEmpty()) {
if (names.isNotEmpty()) {
withContext(Main) {
context.selector(
title = context.getString(R.string.select_restore_file),
@ -83,9 +80,8 @@ object WebDavHelp {
}
}
}
true
} else {
false
throw Exception("Web dav no back up file")
}
}

@ -19,6 +19,7 @@ import io.legado.app.help.storage.WebDavHelp
import io.legado.app.ui.filechooser.FilePicker
import io.legado.app.utils.getPrefString
import io.legado.app.utils.isContentPath
import io.legado.app.utils.longToast
import io.legado.app.utils.toast
import kotlinx.coroutines.Dispatchers.Main
import org.jetbrains.anko.toast
@ -77,24 +78,24 @@ object BackupRestoreUi {
fun restore(fragment: Fragment) {
Coroutine.async(context = Main) {
val restoreFromWebDav = WebDavHelp.showRestoreDialog(fragment.requireContext())
if (!restoreFromWebDav) {
val backupPath = fragment.getPrefString(PreferKey.backupPath)
if (backupPath?.isNotEmpty() == true) {
if (backupPath.isContentPath()) {
val uri = Uri.parse(backupPath)
val doc = DocumentFile.fromTreeUri(fragment.requireContext(), uri)
if (doc?.canWrite() == true) {
Restore.restore(fragment.requireContext(), backupPath)
} else {
selectBackupFolder(fragment, restoreSelectRequestCode)
}
WebDavHelp.showRestoreDialog(fragment.requireContext())
}.onError {
fragment.longToast("WebDavError:${it.localizedMessage},将从本地备份恢复。")
val backupPath = fragment.getPrefString(PreferKey.backupPath)
if (backupPath?.isNotEmpty() == true) {
if (backupPath.isContentPath()) {
val uri = Uri.parse(backupPath)
val doc = DocumentFile.fromTreeUri(fragment.requireContext(), uri)
if (doc?.canWrite() == true) {
Restore.restore(fragment.requireContext(), backupPath)
} else {
restoreUsePermission(fragment, backupPath)
selectBackupFolder(fragment, restoreSelectRequestCode)
}
} else {
selectBackupFolder(fragment, restoreSelectRequestCode)
restoreUsePermission(fragment, backupPath)
}
} else {
selectBackupFolder(fragment, restoreSelectRequestCode)
}
}
}

Loading…
Cancel
Save