kunfei 4 年 前
親
コミット
92652f188a

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

@@ -31,7 +31,7 @@ import java.util.*
  * webDav初始化会访问网络,不要放到主线程
  * webDav初始化会访问网络,不要放到主线程
  */
  */
 object AppWebDav {
 object AppWebDav {
-    const val defaultWebDavUrl = "https://dav.jianguoyun.com/dav/"
+    private const val defaultWebDavUrl = "https://dav.jianguoyun.com/dav/"
     private val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}backup.zip"
     private val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}backup.zip"
     private val bookProgressUrl get() = "${rootWebDavUrl}bookProgress/"
     private val bookProgressUrl get() = "${rootWebDavUrl}bookProgress/"
     private val exportsWebDavUrl get() = "${rootWebDavUrl}books/"
     private val exportsWebDavUrl get() = "${rootWebDavUrl}books/"
@@ -48,7 +48,7 @@ object AppWebDav {
         }
         }
     }
     }
 
 
-    private val rootWebDavUrl: String
+    val rootWebDavUrl: String
         get() {
         get() {
             val configUrl = appCtx.getPrefString(PreferKey.webDavUrl)?.trim()
             val configUrl = appCtx.getPrefString(PreferKey.webDavUrl)?.trim()
             var url = if (configUrl.isNullOrEmpty()) defaultWebDavUrl else configUrl
             var url = if (configUrl.isNullOrEmpty()) defaultWebDavUrl else configUrl

+ 17 - 1
app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt

@@ -2,6 +2,8 @@ package io.legado.app.ui.book.remote
 
 
 import android.annotation.SuppressLint
 import android.annotation.SuppressLint
 import android.os.Bundle
 import android.os.Bundle
+import android.view.Menu
+import android.view.MenuItem
 import androidx.activity.viewModels
 import androidx.activity.viewModels
 import androidx.core.view.isGone
 import androidx.core.view.isGone
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.LinearLayoutManager
@@ -50,13 +52,27 @@ class RemoteBookActivity : VMBaseActivity<ActivityRemoteBookBinding,RemoteBookVi
         viewModel.loadRemoteBookList()
         viewModel.loadRemoteBookList()
     }
     }
 
 
+    override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
+        menuInflater.inflate(R.menu.book_remote, menu)
+        return super.onCompatCreateOptionsMenu(menu)
+    }
+
+    override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
+        when (item.itemId) {
+            R.id.menu_refresh -> {
+                viewModel.loadRemoteBookList()
+            }
+        }
+        return super.onCompatOptionsItemSelected(item)
+    }
+
     @SuppressLint("NotifyDataSetChanged")
     @SuppressLint("NotifyDataSetChanged")
     override fun addToBookshelf(remoteBook: RemoteBook) {
     override fun addToBookshelf(remoteBook: RemoteBook) {
         waitDialog.show()
         waitDialog.show()
         viewModel.addToBookshelf(remoteBook, success = {
         viewModel.addToBookshelf(remoteBook, success = {
             toastOnUi(getString(R.string.download_book_success))
             toastOnUi(getString(R.string.download_book_success))
             adapter.notifyDataSetChanged()
             adapter.notifyDataSetChanged()
-        }){
+        }) {
             waitDialog.dismiss()
             waitDialog.dismiss()
         }
         }
     }
     }

+ 2 - 0
app/src/main/java/io/legado/app/ui/book/remote/RemoteBookViewModel.kt

@@ -54,6 +54,8 @@ class RemoteBookViewModel(application: Application): BaseViewModel(application){
             dataCallback?.clear()
             dataCallback?.clear()
             val bookList = RemoteBookWebDav.getRemoteBookList()
             val bookList = RemoteBookWebDav.getRemoteBookList()
             dataCallback?.setItems(bookList)
             dataCallback?.setItems(bookList)
+        }.onError {
+            context.toastOnUi("获取webDav书籍出错\n${it.localizedMessage}")
         }
         }
     }
     }
 
 

+ 1 - 17
app/src/main/java/io/legado/app/ui/book/remote/manager/RemoteBookWebDav.kt

@@ -3,17 +3,14 @@ package io.legado.app.ui.book.remote.manager
 
 
 import android.net.Uri
 import android.net.Uri
 import io.legado.app.constant.AppPattern.bookFileRegex
 import io.legado.app.constant.AppPattern.bookFileRegex
-import io.legado.app.constant.PreferKey
 import io.legado.app.exception.NoStackTraceException
 import io.legado.app.exception.NoStackTraceException
 import io.legado.app.help.AppWebDav
 import io.legado.app.help.AppWebDav
-import io.legado.app.help.config.AppConfig
 import io.legado.app.lib.webdav.WebDav
 import io.legado.app.lib.webdav.WebDav
 import io.legado.app.lib.webdav.WebDavFile
 import io.legado.app.lib.webdav.WebDavFile
 import io.legado.app.model.localBook.LocalBook
 import io.legado.app.model.localBook.LocalBook
 import io.legado.app.ui.book.remote.RemoteBook
 import io.legado.app.ui.book.remote.RemoteBook
 import io.legado.app.ui.book.remote.RemoteBookManager
 import io.legado.app.ui.book.remote.RemoteBookManager
 import io.legado.app.utils.NetworkUtils
 import io.legado.app.utils.NetworkUtils
-import io.legado.app.utils.getPrefString
 import io.legado.app.utils.isContentScheme
 import io.legado.app.utils.isContentScheme
 import io.legado.app.utils.readBytes
 import io.legado.app.utils.readBytes
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.runBlocking
@@ -22,7 +19,7 @@ import java.io.File
 import java.net.URLDecoder
 import java.net.URLDecoder
 
 
 object RemoteBookWebDav : RemoteBookManager() {
 object RemoteBookWebDav : RemoteBookManager() {
-    private val remoteBookUrl get() = "${rootWebDavUrl}${remoteBookFolder}"
+    private val remoteBookUrl get() = "${AppWebDav.rootWebDavUrl}${remoteBookFolder}"
 
 
     init {
     init {
         runBlocking {
         runBlocking {
@@ -30,19 +27,6 @@ object RemoteBookWebDav : RemoteBookManager() {
         }
         }
     }
     }
 
 
-    private val rootWebDavUrl: String
-        get() {
-            val configUrl = appCtx.getPrefString(PreferKey.webDavUrl)?.trim()
-            var url = if (configUrl.isNullOrEmpty()) AppWebDav.defaultWebDavUrl else configUrl
-            if (!url.endsWith("/")) url = "${url}/"
-            AppConfig.webDavDir?.trim()?.let {
-                if (it.isNotEmpty()) {
-                    url = "${url}${it}/"
-                }
-            }
-            return url
-        }
-
     override suspend fun initRemoteContext() {
     override suspend fun initRemoteContext() {
         AppWebDav.authorization?.let {
         AppWebDav.authorization?.let {
             WebDav(remoteBookUrl, it).makeAsDir()
             WebDav(remoteBookUrl, it).makeAsDir()

+ 11 - 0
app/src/main/res/menu/book_remote.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <item
+        android:id="@+id/menu_refresh"
+        android:title="@string/refresh"
+        android:icon="@drawable/ic_refresh_black_24dp"
+        app:showAsAction="always" />
+
+</menu>