kunfei 3 лет назад
Родитель
Сommit
7f77487787

+ 4 - 8
app/src/main/java/io/legado/app/help/AppWebDav.kt

@@ -44,6 +44,8 @@ object AppWebDav {
     var authorization: Authorization? = null
         private set
 
+    var defaultBookWebDav: RemoteBookWebDav? = null
+
     val isOk get() = authorization != null
 
     private val isJianGuoYun get() = rootWebDavUrl.startsWith(defaultWebDavUrl, true)
@@ -79,14 +81,6 @@ object AppWebDav {
             }
         }
 
-    @Throws(NoStackTraceException::class)
-    fun getDefaultRemoteBookWebDav(): RemoteBookWebDav {
-        val rootUrl = "${rootWebDavUrl}books"
-        val authorization = AppWebDav.authorization
-            ?: throw NoStackTraceException("webDav没有配置")
-        return RemoteBookWebDav(rootUrl, authorization)
-    }
-
     suspend fun upConfig() {
         kotlin.runCatching {
             authorization = null
@@ -97,6 +91,8 @@ object AppWebDav {
                 WebDav(rootWebDavUrl, mAuthorization).makeAsDir()
                 WebDav(bookProgressUrl, mAuthorization).makeAsDir()
                 WebDav(exportsWebDavUrl, mAuthorization).makeAsDir()
+                val rootBooksUrl = "${rootWebDavUrl}books"
+                defaultBookWebDav = RemoteBookWebDav(rootBooksUrl, mAuthorization)
                 authorization = mAuthorization
             }
         }

+ 1 - 3
app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookViewModel.kt

@@ -76,10 +76,8 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application)
 
     fun initData(onSuccess: () -> Unit) {
         execute {
-            val rootUrl = "${AppWebDav.rootWebDavUrl}books"
-            val authorization = AppWebDav.authorization
+            remoteBookWebDav = AppWebDav.defaultBookWebDav
                 ?: throw NoStackTraceException("webDav没有配置")
-            remoteBookWebDav = RemoteBookWebDav(rootUrl, authorization)
         }.onError {
             context.toastOnUi("初始化webDav出错:${it.localizedMessage}")
         }.onSuccess {

+ 4 - 2
app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt

@@ -19,6 +19,7 @@ import io.legado.app.data.entities.BookChapter
 import io.legado.app.data.entities.BookSource
 import io.legado.app.databinding.ActivityBookInfoBinding
 import io.legado.app.databinding.DialogEditTextBinding
+import io.legado.app.exception.NoStackTraceException
 import io.legado.app.help.AppWebDav
 import io.legado.app.help.book.isAudio
 import io.legado.app.help.book.isLocal
@@ -210,8 +211,9 @@ class BookInfoActivity :
                         waitDialog.setText("上传中.....")
                         waitDialog.show()
                         try {
-                            AppWebDav.getDefaultRemoteBookWebDav()
-                                .upload(it)
+                            AppWebDav.defaultBookWebDav
+                                ?.upload(it)
+                                ?: throw NoStackTraceException("未配置webDav")
                             //更新书籍最后更新时间,使之比远程书籍的时间新
                             it.lastCheckTime = System.currentTimeMillis()
                             viewModel.saveBook(it)

+ 2 - 1
app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt

@@ -114,7 +114,8 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
             if (book.isLocal) {
                 book.tocUrl = ""
                 book.getRemoteUrl()?.let {
-                    val bookWebDav = AppWebDav.getDefaultRemoteBookWebDav()
+                    val bookWebDav = AppWebDav.defaultBookWebDav
+                        ?: throw NoStackTraceException("webDav没有配置")
                     val remoteBook = bookWebDav.getRemoteBook(it)
                     if (remoteBook == null) {
                         book.origin = BookType.localTag