fix: WebDAV错误触发的崩溃

This commit is contained in:
HapeLee
2026-06-30 09:02:33 +08:00
parent 00ebcea9b7
commit 92eaff19ae
@@ -35,7 +35,6 @@ import io.legado.app.BuildConfig
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.BaseComposeActivity import io.legado.app.base.BaseComposeActivity
import io.legado.app.constant.AppConst.appInfo import io.legado.app.constant.AppConst.appInfo
import io.legado.app.constant.PreferKey
import io.legado.app.help.book.BookHelp import io.legado.app.help.book.BookHelp
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.LocalConfig import io.legado.app.help.config.LocalConfig
@@ -56,6 +55,7 @@ import io.legado.app.ui.widget.dialog.VariableDialog
import io.legado.app.utils.LogUtils import io.legado.app.utils.LogUtils
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.startActivity import io.legado.app.utils.startActivity
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -391,8 +391,13 @@ open class MainActivity : BaseComposeActivity(), VariableDialog.Callback {
return return
} }
lifecycleScope.launch { lifecycleScope.launch {
val lastBackupFile = val lastBackupFile = try {
withContext(IO) { viewModel.getLatestWebDavBackup() } ?: return@launch withContext(IO) { viewModel.getLatestWebDavBackup() }
} catch (error: CancellationException) {
throw error
} catch (_: Exception) {
return@launch
} ?: return@launch
if (lastBackupFile.lastModify - LocalConfig.lastBackup > DateUtils.MINUTE_IN_MILLIS) { if (lastBackupFile.lastModify - LocalConfig.lastBackup > DateUtils.MINUTE_IN_MILLIS) {
LocalConfig.lastBackup = lastBackupFile.lastModify LocalConfig.lastBackup = lastBackupFile.lastModify
alert(R.string.restore, R.string.webdav_after_local_restore_confirm) { alert(R.string.restore, R.string.webdav_after_local_restore_confirm) {