From 646f892f3ecdbbab10d16dcddb971d35df52cdff Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 15 Jun 2022 10:29:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/help/AppWebDav.kt | 4 ++-- .../app/ui/book/remote/RemoteBookActivity.kt | 18 +++++++++++++++++- .../app/ui/book/remote/RemoteBookViewModel.kt | 2 ++ .../ui/book/remote/manager/RemoteBookWebDav.kt | 18 +----------------- app/src/main/res/menu/book_remote.xml | 11 +++++++++++ 5 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 app/src/main/res/menu/book_remote.xml diff --git a/app/src/main/java/io/legado/app/help/AppWebDav.kt b/app/src/main/java/io/legado/app/help/AppWebDav.kt index 16e68d36a..5f6748aa6 100644 --- a/app/src/main/java/io/legado/app/help/AppWebDav.kt +++ b/app/src/main/java/io/legado/app/help/AppWebDav.kt @@ -31,7 +31,7 @@ import java.util.* * webDav初始化会访问网络,不要放到主线程 */ 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 bookProgressUrl get() = "${rootWebDavUrl}bookProgress/" private val exportsWebDavUrl get() = "${rootWebDavUrl}books/" @@ -48,7 +48,7 @@ object AppWebDav { } } - private val rootWebDavUrl: String + val rootWebDavUrl: String get() { val configUrl = appCtx.getPrefString(PreferKey.webDavUrl)?.trim() var url = if (configUrl.isNullOrEmpty()) defaultWebDavUrl else configUrl diff --git a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt index 92bf8c532..5001cd8b7 100644 --- a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt +++ b/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.os.Bundle +import android.view.Menu +import android.view.MenuItem import androidx.activity.viewModels import androidx.core.view.isGone import androidx.recyclerview.widget.LinearLayoutManager @@ -50,13 +52,27 @@ class RemoteBookActivity : VMBaseActivity { + viewModel.loadRemoteBookList() + } + } + return super.onCompatOptionsItemSelected(item) + } + @SuppressLint("NotifyDataSetChanged") override fun addToBookshelf(remoteBook: RemoteBook) { waitDialog.show() viewModel.addToBookshelf(remoteBook, success = { toastOnUi(getString(R.string.download_book_success)) adapter.notifyDataSetChanged() - }){ + }) { waitDialog.dismiss() } } diff --git a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookViewModel.kt index fecb8a62b..6de7c9a94 100644 --- a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookViewModel.kt @@ -54,6 +54,8 @@ class RemoteBookViewModel(application: Application): BaseViewModel(application){ dataCallback?.clear() val bookList = RemoteBookWebDav.getRemoteBookList() dataCallback?.setItems(bookList) + }.onError { + context.toastOnUi("获取webDav书籍出错\n${it.localizedMessage}") } } diff --git a/app/src/main/java/io/legado/app/ui/book/remote/manager/RemoteBookWebDav.kt b/app/src/main/java/io/legado/app/ui/book/remote/manager/RemoteBookWebDav.kt index c96ab8532..7990c3d73 100644 --- a/app/src/main/java/io/legado/app/ui/book/remote/manager/RemoteBookWebDav.kt +++ b/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 io.legado.app.constant.AppPattern.bookFileRegex -import io.legado.app.constant.PreferKey import io.legado.app.exception.NoStackTraceException 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.WebDavFile import io.legado.app.model.localBook.LocalBook import io.legado.app.ui.book.remote.RemoteBook import io.legado.app.ui.book.remote.RemoteBookManager import io.legado.app.utils.NetworkUtils -import io.legado.app.utils.getPrefString import io.legado.app.utils.isContentScheme import io.legado.app.utils.readBytes import kotlinx.coroutines.runBlocking @@ -22,7 +19,7 @@ import java.io.File import java.net.URLDecoder object RemoteBookWebDav : RemoteBookManager() { - private val remoteBookUrl get() = "${rootWebDavUrl}${remoteBookFolder}" + private val remoteBookUrl get() = "${AppWebDav.rootWebDavUrl}${remoteBookFolder}" init { 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() { AppWebDav.authorization?.let { WebDav(remoteBookUrl, it).makeAsDir() diff --git a/app/src/main/res/menu/book_remote.xml b/app/src/main/res/menu/book_remote.xml new file mode 100644 index 000000000..8474a81d7 --- /dev/null +++ b/app/src/main/res/menu/book_remote.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file