Browse Source

feat(book/remote): save remoteBookFile to defaultBookTreeUri

Xwite 4 năm trước cách đây
mục cha
commit
7437cf23db

+ 1 - 1
app/src/main/java/io/legado/app/model/localBook/LocalBook.kt

@@ -243,7 +243,7 @@ object LocalBook {
         return type ?: fileType
         return type ?: fileType
     }
     }
 
 
-    private fun saveBookFile(
+    fun saveBookFile(
         bytes: ByteArray,
         bytes: ByteArray,
         fileName: String
         fileName: String
     ): Uri {
     ): Uri {

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

@@ -12,5 +12,5 @@ abstract class RemoteBookManager {
     /**
     /**
      * @return String:下载到本地的路径
      * @return String:下载到本地的路径
      */
      */
-    abstract suspend fun getRemoteBook(remoteBook: RemoteBook): String?
+    abstract suspend fun getRemoteBook(remoteBook: RemoteBook): Uri?
 }
 }

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

@@ -73,7 +73,7 @@ class RemoteBookViewModel(application: Application): BaseViewModel(application){
         execute {
         execute {
             val downloadBookPath = RemoteBookWebDav.getRemoteBook(remoteBook)
             val downloadBookPath = RemoteBookWebDav.getRemoteBook(remoteBook)
             downloadBookPath?.let {
             downloadBookPath?.let {
-                LocalBook.importFile(Uri.parse(it))
+                LocalBook.importFile(it)
             }
             }
         }.onFinally {
         }.onFinally {
             finally.invoke()
             finally.invoke()

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

@@ -9,6 +9,7 @@ import io.legado.app.help.AppWebDav
 import io.legado.app.help.config.AppConfig
 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.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.*
 import io.legado.app.utils.*
@@ -18,7 +19,6 @@ import java.io.File
 
 
 object RemoteBookWebDav : RemoteBookManager() {
 object RemoteBookWebDav : RemoteBookManager() {
     private val remoteBookUrl get() = "${rootWebDavUrl}${remoteBookFolder}"
     private val remoteBookUrl get() = "${rootWebDavUrl}${remoteBookFolder}"
-    private val localSaveFolder get() = "${appCtx.externalFiles.absolutePath}${File.separator}${remoteBookFolder}"
 
 
     init {
     init {
         runBlocking {
         runBlocking {
@@ -83,23 +83,21 @@ object RemoteBookWebDav : RemoteBookManager() {
         return remoteBooks
         return remoteBooks
     }
     }
 
 
-    override suspend fun getRemoteBook(remoteBook: RemoteBook): String? {
-        val saveFilePath= "${localSaveFolder}${File.separator}${remoteBook.filename}"
-        kotlin.runCatching {
+    override suspend fun getRemoteBook(remoteBook: RemoteBook): Uri? {
+        return kotlin.runCatching {
             AppWebDav.authorization?.let {
             AppWebDav.authorization?.let {
-                FileUtils.createFolderIfNotExist(localSaveFolder).run {
-                    val webdav = WebDav(
-                        remoteBook.urlName,
-                        it
-                    )
-                    webdav.downloadTo(saveFilePath, true)
+                val webdav = WebDav(
+                    remoteBook.urlName,
+                    it
+                )
+                webdav.download().let { bytes ->
+                    LocalBook.saveBookFile(bytes, remoteBook.filename)
                 }
                 }
             }
             }
         }.onFailure {
         }.onFailure {
             it.printStackTrace()
             it.printStackTrace()
-            return null
-        }
-        return saveFilePath
+            null
+        }.getOrNull()
     }
     }
 
 
     /**
     /**