feat(RemoteBook): 上传webdav时保存远程链接到Book

pull/2364/head
Xwite 3 years ago
parent 0f389eda8a
commit 328a99b6ae
  1. 29
      app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt
  2. 10
      app/src/main/java/io/legado/app/ui/book/remote/manager/RemoteBookWebDav.kt

@ -207,20 +207,21 @@ class BookInfoActivity :
R.id.menu_upload -> { R.id.menu_upload -> {
launch { launch {
val uri = Uri.parse(viewModel.bookData.value?.bookUrl.toString()) viewModel.bookData.value?.let {
val waitDialog = WaitDialog(this@BookInfoActivity) val waitDialog = WaitDialog(this@BookInfoActivity)
waitDialog.setText("上传中.....") waitDialog.setText("上传中.....")
waitDialog.show() waitDialog.show()
try { try {
val isUpload = RemoteBookWebDav.upload(uri) val isUpload = RemoteBookWebDav.upload(it)
if (isUpload) if (isUpload)
toastOnUi(getString(R.string.upload_book_success)) toastOnUi(getString(R.string.upload_book_success))
else else
toastOnUi(getString(R.string.upload_book_fail)) toastOnUi(getString(R.string.upload_book_fail))
} catch (e: Exception) { } catch (e: Exception) {
toastOnUi(e.localizedMessage) toastOnUi(e.localizedMessage)
} finally { } finally {
waitDialog.dismiss() waitDialog.dismiss()
}
} }
} }
} }

@ -3,6 +3,7 @@ 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.data.entities.Book
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.lib.webdav.WebDav import io.legado.app.lib.webdav.WebDav
@ -85,11 +86,10 @@ object RemoteBookWebDav : RemoteBookManager() {
/** /**
* 上传本地导入的书籍到远程 * 上传本地导入的书籍到远程
*/ */
override suspend fun upload(localBookUri: Uri): Boolean { override suspend fun upload(book: Book): Boolean {
if (!NetworkUtils.isAvailable()) return false if (!NetworkUtils.isAvailable()) return false
val localBookUri = Uri.parse(book.bookUrl)
val localBookName = localBookUri.path?.substringAfterLast(File.separator) val putUrl = "${rootBookUrl}${File.separator}${book.originName}"
val putUrl = "${rootBookUrl}${File.separator}${localBookName}"
AppWebDav.authorization?.let { AppWebDav.authorization?.let {
if (localBookUri.isContentScheme()) { if (localBookUri.isContentScheme()) {
WebDav(putUrl, it).upload( WebDav(putUrl, it).upload(
@ -100,6 +100,8 @@ object RemoteBookWebDav : RemoteBookManager() {
WebDav(putUrl, it).upload(localBookUri.path!!) WebDav(putUrl, it).upload(localBookUri.path!!)
} }
} }
book.remoteUrl = putUrl
book.save()
return true return true
} }

Loading…
Cancel
Save