diff --git a/app/src/main/java/io/legado/app/help/AppWebDav.kt b/app/src/main/java/io/legado/app/help/AppWebDav.kt index b7ac3cb99..db0035c57 100644 --- a/app/src/main/java/io/legado/app/help/AppWebDav.kt +++ b/app/src/main/java/io/legado/app/help/AppWebDav.kt @@ -1,6 +1,7 @@ package io.legado.app.help import android.net.Uri +import io.legado.app.R import io.legado.app.constant.AppLog import io.legado.app.constant.PreferKey import io.legado.app.data.appDb @@ -62,13 +63,12 @@ object AppWebDav { suspend fun upConfig() { kotlin.runCatching { authorization = null + defaultBookWebDav = null val account = appCtx.getPrefString(PreferKey.webDavAccount) val password = appCtx.getPrefString(PreferKey.webDavPassword) if (!account.isNullOrBlank() && !password.isNullOrBlank()) { val mAuthorization = Authorization(account, password) - WebDav(rootWebDavUrl, mAuthorization).makeAsDir() - WebDav(bookProgressUrl, mAuthorization).makeAsDir() - WebDav(exportsWebDavUrl, mAuthorization).makeAsDir() + checkAuthorization(mAuthorization) val rootBooksUrl = "${rootWebDavUrl}books" defaultBookWebDav = RemoteBookWebDav(rootBooksUrl, mAuthorization) authorization = mAuthorization @@ -76,6 +76,18 @@ object AppWebDav { } } + @Throws(WebDavException::class) + private suspend fun checkAuthorization(authorization: Authorization) { + if (!WebDav(rootWebDavUrl, authorization).makeAsDir() || + !WebDav(bookProgressUrl, authorization).makeAsDir() || + !WebDav(exportsWebDavUrl, authorization).makeAsDir() + ) { + appCtx.removePref(PreferKey.webDavPassword) + appCtx.toastOnUi(R.string.webdav_application_password_error) + throw WebDavException(appCtx.getString(R.string.webdav_application_password_error)) + } + } + @Throws(Exception::class) suspend fun getBackupNames(): ArrayList { val names = arrayListOf() diff --git a/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt index e7070a901..847b24421 100644 --- a/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt @@ -191,19 +191,19 @@ class BackupConfigFragment : PreferenceFragment(), val preference = findPreference(preferenceKey) ?: return when (preferenceKey) { PreferKey.webDavUrl -> - if (value == null) { + if (value.isNullOrBlank()) { preference.summary = getString(R.string.web_dav_url_s) } else { preference.summary = value.toString() } PreferKey.webDavAccount -> - if (value == null) { + if (value.isNullOrBlank()) { preference.summary = getString(R.string.web_dav_account_s) } else { preference.summary = value.toString() } PreferKey.webDavPassword -> - if (value == null) { + if (value.isNullOrBlank()) { preference.summary = getString(R.string.web_dav_pw_s) } else { preference.summary = "*".repeat(value.toString().length) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 6522d0745..832b7a7e6 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1098,4 +1098,5 @@ 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. 仅保留最新备份 本地备份仅保留最新备份文件 + WebDav application password error diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 4b7a841f9..c17e94f02 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1101,4 +1101,5 @@ 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. 仅保留最新备份 本地备份仅保留最新备份文件 + WebDav application password error diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index af4d081a2..d9960cbdf 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1101,4 +1101,5 @@ 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. 仅保留最新备份 本地备份仅保留最新备份文件 + WebDav application password error diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index ce3c6c137..6242c01cb 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1098,4 +1098,5 @@ 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. 仅保留最新备份 本地备份仅保留最新备份文件 + webDav应用密码错误 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 7b6b18510..721250cd9 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1100,4 +1100,5 @@ 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. 仅保留最新备份 本地备份仅保留最新备份文件 + webDav应用密码错误 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index c2f8c3153..4a7ae3cf6 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1100,4 +1100,5 @@ 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. 仅保留最新备份 本地备份仅保留最新备份文件 + webDav应用密码错误 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 96c9aa00b..5df76d0c5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1101,4 +1101,5 @@ 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. 仅保留最新备份 本地备份仅保留最新备份文件 + WebDav application password error