From ba9aaecd07121e5a9532eb350ddd3fe2d16fff5f Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Wed, 10 Dec 2025 20:42:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20#5598?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/association/ImportRssSourceDialog.kt | 17 ++++++++++++----- .../ui/association/ImportRssSourceViewModel.kt | 2 +- .../rss/source/edit/RssSourceEditViewModel.kt | 12 ++++++++++++ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/association/ImportRssSourceDialog.kt b/app/src/main/java/io/legado/app/ui/association/ImportRssSourceDialog.kt index 5eb2a03c9..97a7affe9 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportRssSourceDialog.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportRssSourceDialog.kt @@ -25,8 +25,14 @@ import io.legado.app.lib.dialogs.alert import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.widget.dialog.CodeDialog import io.legado.app.ui.widget.dialog.WaitDialog -import io.legado.app.utils.* +import io.legado.app.utils.GSON +import io.legado.app.utils.dpToPx +import io.legado.app.utils.fromJsonObject +import io.legado.app.utils.putPrefBoolean +import io.legado.app.utils.setLayout +import io.legado.app.utils.showDialogFragment import io.legado.app.utils.viewbindingdelegate.viewBinding +import io.legado.app.utils.visible import splitties.views.onClick /** @@ -223,10 +229,11 @@ class ImportRssSourceDialog() : BaseDialogFragment(R.layout.dialog_recycler_view binding.apply { cbSourceName.isChecked = viewModel.selectStatus[holder.layoutPosition] cbSourceName.text = item.sourceName - tvSourceState.text = if (viewModel.checkSources[holder.layoutPosition] != null) { - "已有" - } else { - "新增" + val localSource = viewModel.checkSources[holder.layoutPosition] + tvSourceState.text = when { + localSource == null -> "新增" + item.lastUpdateTime > localSource.lastUpdateTime -> "更新" + else -> "已有" } } } diff --git a/app/src/main/java/io/legado/app/ui/association/ImportRssSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportRssSourceViewModel.kt index 3a9024aa7..fa27c2a5d 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportRssSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportRssSourceViewModel.kt @@ -184,7 +184,7 @@ class ImportRssSourceViewModel(app: Application) : BaseViewModel(app) { allSources.forEach { val has = appDb.rssSourceDao.getByKey(it.sourceUrl) checkSources.add(has) - selectStatus.add(has == null) + selectStatus.add(has == null || has.lastUpdateTime < it.lastUpdateTime) } successLiveData.postValue(allSources.size) } 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 5db8e4b34..1883d2213 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 @@ -10,6 +10,8 @@ import io.legado.app.exception.NoStackTraceException import io.legado.app.help.AppCacheManager import io.legado.app.help.RuleComplete import io.legado.app.help.http.CookieStore +import io.legado.app.help.source.removeSortCache +import io.legado.app.model.SharedJsScope import io.legado.app.utils.GSON import io.legado.app.utils.fromJsonObject import io.legado.app.utils.getClipText @@ -41,6 +43,16 @@ class RssSourceEditViewModel(application: Application) : BaseViewModel(applicati if (source.sourceName.isBlank() || source.sourceName.isBlank()) { throw NoStackTraceException(context.getString(R.string.non_null_name_url)) } + val oldSource = rssSource ?: RssSource() + if (!source.equal(oldSource)) { + source.lastUpdateTime = System.currentTimeMillis() + if (oldSource.sortUrl != source.sortUrl) { + oldSource.removeSortCache() + } + if (oldSource.jsLib != source.jsLib) { + SharedJsScope.remove(oldSource.jsLib) + } + } rssSource?.let { appDb.rssSourceDao.delete(it) //更新收藏的源地址