From 5acfe9be68c1b0585248d0f1f0ab307e357214f4 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Sun, 9 Jun 2024 19:26:29 +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 --- app/src/main/java/io/legado/app/base/BaseViewModel.kt | 9 +++++++++ .../app/ui/book/import/remote/RemoteBookActivity.kt | 6 +++++- .../app/ui/book/import/remote/RemoteBookViewModel.kt | 7 +++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/base/BaseViewModel.kt b/app/src/main/java/io/legado/app/base/BaseViewModel.kt index f62b8c954..cc9ea933b 100644 --- a/app/src/main/java/io/legado/app/base/BaseViewModel.kt +++ b/app/src/main/java/io/legado/app/base/BaseViewModel.kt @@ -27,6 +27,15 @@ open class BaseViewModel(application: Application) : AndroidViewModel(applicatio return Coroutine.async(scope, context, start, executeContext, block) } + fun executeLazy( + scope: CoroutineScope = viewModelScope, + context: CoroutineContext = Dispatchers.IO, + executeContext: CoroutineContext = Dispatchers.Main, + block: suspend CoroutineScope.() -> T + ): Coroutine { + return Coroutine.async(scope, context, CoroutineStart.LAZY, executeContext, block) + } + fun submit( scope: CoroutineScope = viewModelScope, context: CoroutineContext = Dispatchers.IO, diff --git a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookActivity.kt index 752061ef7..5951f7813 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookActivity.kt @@ -170,7 +170,11 @@ class RemoteBookActivity : BaseImportBookActivity(), private fun upPath() { binding.tvGoBack.isEnabled = viewModel.dirList.isNotEmpty() - var path = "books" + File.separator + var path = if (viewModel.isDefaultWebdav) { + "books" + File.separator + } else { + File.separator + } viewModel.dirList.forEach { path = path + it.filename + File.separator } 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 b2c5c949d..2c3ae1020 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 @@ -90,14 +90,17 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application) }.flowOn(Dispatchers.IO) private var remoteBookWebDav: RemoteBookWebDav? = null + var isDefaultWebdav = false fun initData(onSuccess: () -> Unit) { execute { + isDefaultWebdav = false appDb.serverDao.get(AppConfig.remoteServerId)?.getWebDavConfig()?.let { val authorization = Authorization(it) remoteBookWebDav = RemoteBookWebDav(it.url, authorization, AppConfig.remoteServerId) return@execute } + isDefaultWebdav = true remoteBookWebDav = AppWebDav.defaultBookWebDav ?: throw NoStackTraceException("webDav没有配置") }.onError { @@ -108,7 +111,7 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application) } fun loadRemoteBookList(path: String?, loadCallback: (loading: Boolean) -> Unit) { - execute { + executeLazy { val bookWebDav = remoteBookWebDav ?: throw NoStackTraceException("没有配置webDav") dataCallback?.clear() @@ -122,7 +125,7 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application) loadCallback.invoke(true) }.onFinally { loadCallback.invoke(false) - } + }.start() } fun addToBookshelf(remoteBooks: HashSet, finally: () -> Unit) {