From 00efb16d72641bb76cc26006db5f0bda8b1ad597 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 22 Feb 2023 08:36:24 +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 --- .../java/io/legado/app/data/entities/BookSource.kt | 6 ++++-- .../java/io/legado/app/data/entities/RssSource.kt | 3 ++- .../app/ui/book/source/edit/BookSourceEditActivity.kt | 11 +++-------- .../ui/book/source/edit/BookSourceEditViewModel.kt | 11 +++-------- .../app/ui/rss/source/edit/RssSourceEditActivity.kt | 4 ++-- .../app/ui/rss/source/edit/RssSourceEditViewModel.kt | 10 ++++------ 6 files changed, 18 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index 3d5362c3f..0d9a8255b 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -192,8 +192,9 @@ data class BookSource( } } - fun equal(source: BookSource) = - equal(bookSourceName, source.bookSourceName) + fun equal(source: BookSource?): Boolean { + source ?: return false + return equal(bookSourceName, source.bookSourceName) && equal(bookSourceUrl, source.bookSourceUrl) && equal(bookSourceGroup, source.bookSourceGroup) && bookSourceType == source.bookSourceType @@ -216,6 +217,7 @@ data class BookSource( && getBookInfoRule() == source.getBookInfoRule() && getTocRule() == source.getTocRule() && getContentRule() == source.getContentRule() + } private fun equal(a: String?, b: String?) = a == b || (a.isNullOrEmpty() && b.isNullOrEmpty()) diff --git a/app/src/main/java/io/legado/app/data/entities/RssSource.kt b/app/src/main/java/io/legado/app/data/entities/RssSource.kt index c03015342..1aa427304 100644 --- a/app/src/main/java/io/legado/app/data/entities/RssSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/RssSource.kt @@ -101,7 +101,8 @@ data class RssSource( override fun hashCode() = sourceUrl.hashCode() - fun equal(source: RssSource): Boolean { + fun equal(source: RssSource?): Boolean { + source ?: return false return equal(sourceUrl, source.sourceUrl) && equal(sourceIcon, source.sourceIcon) && enabled == source.enabled diff --git a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt index 3014f2704..3dc8aec59 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt @@ -103,7 +103,7 @@ class BookSourceEditActivity : override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.menu_save -> getSource().let { source -> - if (!source.equal(viewModel.bookSource ?: BookSource())) { + if (!source.equal(viewModel.bookSource)) { source.lastUpdateTime = System.currentTimeMillis() } if (checkSource(source)) { @@ -192,12 +192,7 @@ class BookSourceEditActivity : override fun finish() { val source = getSource() - val source2 = viewModel.bookSource ?: BookSource().apply { - enabledExplore = true - enabledCookieJar = true - enabledReview = true - } - if (!source.equal(source2)) { + if (!source.equal(viewModel.bookSource)) { alert(R.string.exit) { setMessage(R.string.exit_no_save) positiveButton(R.string.yes) @@ -599,7 +594,7 @@ class BookSourceEditActivity : launch { val source = viewModel.bookSource if (source == null) { - toastOnUi("书源不存在") + toastOnUi("先保存书源") return@launch } val variable = withContext(IO) { source.getVariable() } diff --git a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt index 09ca680f4..9f9391c7e 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt @@ -18,7 +18,6 @@ import kotlinx.coroutines.Dispatchers class BookSourceEditViewModel(application: Application) : BaseViewModel(application) { var autoComplete = false var bookSource: BookSource? = null - private var oldSourceUrl: String? = null fun initData(intent: Intent, onFinally: () -> Unit) { execute { @@ -28,7 +27,6 @@ class BookSourceEditViewModel(application: Application) : BaseViewModel(applicat source = appDb.bookSourceDao.getBookSource(sourceUrl) } source?.let { - oldSourceUrl = it.bookSourceUrl bookSource = it } }.onFinally { @@ -38,13 +36,10 @@ class BookSourceEditViewModel(application: Application) : BaseViewModel(applicat fun save(source: BookSource, success: (() -> Unit)? = null) { execute { - oldSourceUrl?.let { - if (oldSourceUrl != source.bookSourceUrl) { - appDb.bookSourceDao.delete(it) - SourceConfig.removeSource(it) - } + bookSource?.let { + appDb.bookSourceDao.delete(it) + SourceConfig.removeSource(it.bookSourceUrl) } - oldSourceUrl = source.bookSourceUrl source.lastUpdateTime = System.currentTimeMillis() appDb.bookSourceDao.insert(source) bookSource = source diff --git a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt index 0d185cb79..dde1893b0 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt @@ -100,7 +100,7 @@ class RssSourceEditActivity : } override fun onMenuOpened(featureId: Int, menu: Menu): Boolean { - menu.findItem(R.id.menu_login)?.isVisible = !viewModel.rssSource.loginUrl.isNullOrBlank() + menu.findItem(R.id.menu_login)?.isVisible = !viewModel.rssSource?.loginUrl.isNullOrBlank() menu.findItem(R.id.menu_auto_complete)?.isChecked = viewModel.autoComplete return super.onMenuOpened(featureId, menu) } @@ -251,7 +251,7 @@ class RssSourceEditActivity : } private fun getRssSource(): RssSource { - val source = viewModel.rssSource + val source = viewModel.rssSource?.copy() ?: RssSource() source.enabled = binding.cbIsEnable.isChecked source.singleUrl = binding.cbSingleUrl.isChecked source.enabledCookieJar = binding.cbIsEnableCookie.isChecked diff --git a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt index 184fe8d58..67177bf2d 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt @@ -17,8 +17,7 @@ import kotlinx.coroutines.Dispatchers class RssSourceEditViewModel(application: Application) : BaseViewModel(application) { var autoComplete = false - var rssSource: RssSource = RssSource() - private var oldSourceUrl: String = "" + var rssSource: RssSource? = null fun initData(intent: Intent, onFinally: () -> Unit) { execute { @@ -28,7 +27,6 @@ class RssSourceEditViewModel(application: Application) : BaseViewModel(applicati rssSource = it } } - oldSourceUrl = rssSource.sourceUrl }.onFinally { onFinally() } @@ -36,11 +34,11 @@ class RssSourceEditViewModel(application: Application) : BaseViewModel(applicati fun save(source: RssSource, success: (() -> Unit)) { execute { - if (oldSourceUrl != source.sourceUrl) { - appDb.rssSourceDao.delete(oldSourceUrl) - oldSourceUrl = source.sourceUrl + rssSource?.let { + appDb.rssSourceDao.delete(it) } appDb.rssSourceDao.insert(source) + rssSource = source }.onSuccess { success() }.onError {