fix: 远程webDav初始化时服务器id错误 默认webDavId为-1

This commit is contained in:
Xwite
2023-03-10 19:26:07 +08:00
parent e6dda5c810
commit b5741f88a7
5 changed files with 13 additions and 13 deletions
@@ -25,6 +25,8 @@ object AppConst {
const val MAX_THREAD = 9 const val MAX_THREAD = 9
const val DEFAULT_WEBDAV_ID = -1
val SCRIPT_ENGINE: RhinoScriptEngine by lazy { val SCRIPT_ENGINE: RhinoScriptEngine by lazy {
RhinoScriptEngine() RhinoScriptEngine()
} }
@@ -1,6 +1,7 @@
package io.legado.app.lib.webdav package io.legado.app.lib.webdav
import io.legado.app.data.appDb import io.legado.app.data.appDb
import io.legado.app.data.entities.Server.WebDavConfig
import io.legado.app.exception.NoStackTraceException import io.legado.app.exception.NoStackTraceException
import okhttp3.Credentials import okhttp3.Credentials
import java.nio.charset.Charset import java.nio.charset.Charset
@@ -29,4 +30,6 @@ data class Authorization(
} ?: throw WebDavException("Unexpected WebDav Authorization") } ?: throw WebDavException("Unexpected WebDav Authorization")
} }
constructor(webDavConfig: WebDavConfig): this(webDavConfig.username, webDavConfig.password)
} }
@@ -30,7 +30,8 @@ import java.io.File
class RemoteBookActivity : BaseImportBookActivity<ActivityImportBookBinding, RemoteBookViewModel>(), class RemoteBookActivity : BaseImportBookActivity<ActivityImportBookBinding, RemoteBookViewModel>(),
RemoteBookAdapter.CallBack, RemoteBookAdapter.CallBack,
SelectActionBar.CallBack, SelectActionBar.CallBack,
ServerConfigDialog.Callback { ServerConfigDialog.Callback,
ServersDialog.Callback {
override val binding by viewBinding(ActivityImportBookBinding::inflate) override val binding by viewBinding(ActivityImportBookBinding::inflate)
override val viewModel by viewModels<RemoteBookViewModel>() override val viewModel by viewModels<RemoteBookViewModel>()
private val adapter by lazy { RemoteBookAdapter(this, this) } private val adapter by lazy { RemoteBookAdapter(this, this) }
@@ -80,17 +80,10 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application)
fun initData(onSuccess: () -> Unit) { fun initData(onSuccess: () -> Unit) {
execute { execute {
val server = appDb.serverDao.get(AppConfig.remoteServerId) appDb.serverDao.get(AppConfig.remoteServerId)?.getWebDavConfig()?.let {
val serverConfig = server?.getConfigJsonObject() val authorization = Authorization(it)
if (serverConfig != null && serverConfig.has("url")) { remoteBookWebDav = RemoteBookWebDav(it.url, authorization, AppConfig.remoteServerId)
val url = serverConfig.getString("url") return@execute
if (url.isNotBlank()) {
val user = serverConfig.getString("user")
val password = serverConfig.getString("password")
val authorization = Authorization(user, password)
remoteBookWebDav = RemoteBookWebDav(url, authorization, 10001)
return@execute
}
} }
remoteBookWebDav = AppWebDav.defaultBookWebDav remoteBookWebDav = AppWebDav.defaultBookWebDav
?: throw NoStackTraceException("webDav没有配置") ?: throw NoStackTraceException("webDav没有配置")
@@ -10,6 +10,7 @@ import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.legado.app.R import io.legado.app.R
import io.legado.app.constant.AppConst.DEFAULT_WEBDAV_ID
import io.legado.app.base.BaseDialogFragment import io.legado.app.base.BaseDialogFragment
import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.RecyclerAdapter import io.legado.app.base.adapter.RecyclerAdapter
@@ -61,7 +62,7 @@ class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
binding.tvFooterLeft.text = getString(R.string.text_default) binding.tvFooterLeft.text = getString(R.string.text_default)
binding.tvFooterLeft.visible() binding.tvFooterLeft.visible()
binding.tvFooterLeft.setOnClickListener { binding.tvFooterLeft.setOnClickListener {
AppConfig.remoteServerId = 0 AppConfig.remoteServerId = DEFAULT_WEBDAV_ID
dismissAllowingStateLoss() dismissAllowingStateLoss()
} }
binding.tvCancel.visible() binding.tvCancel.visible()