From bfd94969e3d034deb1b2702878e209b621f169be Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Mon, 6 Mar 2023 17:01:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=9C=E7=A8=8B=E4=B9=A6=E7=B1=8D?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E4=B8=8B=E8=BD=BD=E7=9A=84=E4=B9=A6=E7=B1=8D?= =?UTF-8?q?=E7=9A=84=E6=B2=A1=E6=9C=89=E4=BF=9D=E7=95=99=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/lib/webdav/WebDav.kt | 6 +++--- .../io/legado/app/model/remote/RemoteBookWebDav.kt | 11 ++++++----- .../app/ui/book/import/remote/RemoteBookViewModel.kt | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt b/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt index 933fb861a..13a124a63 100644 --- a/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt +++ b/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt @@ -33,7 +33,8 @@ import java.time.format.DateTimeFormatter @Suppress("unused", "MemberVisibilityCanBePrivate") open class WebDav( val path: String, - val authorization: Authorization = Authorization(AnalyzeUrl(path).serverID) + val authorization: Authorization = Authorization(AnalyzeUrl(path).serverID), + private val serverID: Long? = AnalyzeUrl(path).serverID ) { companion object { @@ -65,9 +66,8 @@ open class WebDav( """ } + private val url: URL = URL(AnalyzeUrl(path).url) - /* 服务器id */ - private var serverID: Long? = AnalyzeUrl(path).serverID private val httpUrl: String? by lazy { val raw = url.toString() .replace("davs://", "https://") diff --git a/app/src/main/java/io/legado/app/model/remote/RemoteBookWebDav.kt b/app/src/main/java/io/legado/app/model/remote/RemoteBookWebDav.kt index 15ae21e28..aa95aac7f 100644 --- a/app/src/main/java/io/legado/app/model/remote/RemoteBookWebDav.kt +++ b/app/src/main/java/io/legado/app/model/remote/RemoteBookWebDav.kt @@ -4,7 +4,6 @@ import android.net.Uri import io.legado.app.constant.AppPattern.bookFileRegex import io.legado.app.constant.BookType import io.legado.app.data.entities.Book -import io.legado.app.data.entities.Server import io.legado.app.exception.NoStackTraceException import io.legado.app.help.config.AppConfig import io.legado.app.lib.webdav.Authorization @@ -18,8 +17,11 @@ import kotlinx.coroutines.runBlocking import splitties.init.appCtx import java.io.File -class RemoteBookWebDav(val rootBookUrl: String, val authorization: Authorization) : - RemoteBookManager() { +class RemoteBookWebDav( + val rootBookUrl: String, + val authorization: Authorization, + val serverID: Long? = null +) : RemoteBookManager() { init { runBlocking { @@ -27,7 +29,6 @@ class RemoteBookWebDav(val rootBookUrl: String, val authorization: Authorization } } - // constructor(server: WebDavServer): this(webDavServer.url, Authorization(webDavServer)) @Throws(Exception::class) override suspend fun getRemoteBookList(path: String): MutableList { @@ -66,7 +67,7 @@ class RemoteBookWebDav(val rootBookUrl: String, val authorization: Authorization if (!NetworkUtils.isAvailable()) throw NoStackTraceException("网络不可用") val localBookUri = Uri.parse(book.bookUrl) val putUrl = "$rootBookUrl${File.separator}${book.originName}" - val webDav = WebDav(putUrl, authorization) + val webDav = WebDav(putUrl, authorization, serverID) if (localBookUri.isContentScheme()) { webDav.upload( byteArray = localBookUri.readBytes(appCtx), diff --git a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookViewModel.kt index 6026d883f..c660252bf 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookViewModel.kt @@ -86,7 +86,7 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application) val user = config.getString("user") val password = config.getString("password") val authorization = Authorization(user, password) - remoteBookWebDav = RemoteBookWebDav(url, authorization) + remoteBookWebDav = RemoteBookWebDav(url, authorization, 10001) return@execute } } @@ -125,7 +125,7 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application) val downloadBookPath = bookWebDav.downloadRemoteBook(remoteBook) downloadBookPath.let { val localBook = LocalBook.importFile(it) - localBook.origin = BookType.webDavTag + WebDav(remoteBook.path, bookWebDav.authorization).toString() + localBook.origin = BookType.webDavTag + WebDav(remoteBook.path, serverID = bookWebDav.serverID).toString() localBook.save() remoteBook.isOnBookShelf = true }