From 96efb19de56307d573a612b2c6fbb445e56afe59 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Wed, 30 Apr 2025 16:22:28 +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/help/JsExtensions.kt | 2 ++ .../io/legado/app/help/source/BaseSourceExtensions.kt | 2 +- .../main/java/io/legado/app/help/source/SourceHelp.kt | 8 +++++++- .../legado/app/help/source/SourceVerificationHelp.kt | 1 + .../app/ui/association/OpenUrlConfirmActivity.kt | 4 +++- .../legado/app/ui/association/OpenUrlConfirmDialog.kt | 4 +++- .../app/ui/association/OpenUrlConfirmViewModel.kt | 8 ++++++-- .../app/ui/association/VerificationCodeActivity.kt | 4 +++- .../app/ui/association/VerificationCodeDialog.kt | 4 +++- .../app/ui/association/VerificationCodeViewModel.kt | 9 ++++++--- .../java/io/legado/app/ui/font/FontSelectDialog.kt | 2 +- .../io/legado/app/ui/main/explore/ExploreViewModel.kt | 4 ++-- .../app/ui/rss/source/edit/RssSourceEditActivity.kt | 3 +-- .../app/ui/rss/source/edit/RssSourceEditViewModel.kt | 10 +++++++--- 14 files changed, 46 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt index 97367b180..03ba50d6c 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -19,6 +19,7 @@ import io.legado.app.help.http.CookieStore import io.legado.app.help.http.SSLHelper import io.legado.app.help.http.StrResponse import io.legado.app.help.source.SourceVerificationHelp +import io.legado.app.help.source.getSourceType import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.model.analyzeRule.QueryTTF @@ -984,6 +985,7 @@ interface JsExtensions : JsEncodeUtils { putExtra("mimeType", mimeType) putExtra("sourceOrigin", source.getKey()) putExtra("sourceName", source.getTag()) + putExtra("sourceType", source.getSourceType()) } } diff --git a/app/src/main/java/io/legado/app/help/source/BaseSourceExtensions.kt b/app/src/main/java/io/legado/app/help/source/BaseSourceExtensions.kt index 81a8413e5..5c64a1b66 100644 --- a/app/src/main/java/io/legado/app/help/source/BaseSourceExtensions.kt +++ b/app/src/main/java/io/legado/app/help/source/BaseSourceExtensions.kt @@ -16,6 +16,6 @@ fun BaseSource.getSourceType(): Int { return when (this) { is BookSource -> SourceType.book is RssSource -> SourceType.rss - else -> error("unknown source type.") + else -> error("unknown source type: ${this::class.simpleName}.") } } diff --git a/app/src/main/java/io/legado/app/help/source/SourceHelp.kt b/app/src/main/java/io/legado/app/help/source/SourceHelp.kt index 2b2437d65..cb57a1ac3 100644 --- a/app/src/main/java/io/legado/app/help/source/SourceHelp.kt +++ b/app/src/main/java/io/legado/app/help/source/SourceHelp.kt @@ -5,6 +5,7 @@ import io.legado.app.data.appDb import io.legado.app.data.entities.BaseSource import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.RssSource +import io.legado.app.help.config.SourceConfig import io.legado.app.help.coroutine.Coroutine import io.legado.app.model.AudioPlay import io.legado.app.model.ReadBook @@ -52,11 +53,16 @@ object SourceHelp { fun deleteSource(key: String, @SourceType.Type type: Int) { when (type) { - SourceType.book -> appDb.bookSourceDao.delete(key) + SourceType.book -> deleteBookSource(key) SourceType.rss -> appDb.rssSourceDao.delete(key) } } + fun deleteBookSource(key: String) { + appDb.bookSourceDao.delete(key) + SourceConfig.removeSource(key) + } + fun enableSource(key: String, @SourceType.Type type: Int, enable: Boolean) { when (type) { SourceType.book -> appDb.bookSourceDao.enable(key, enable) diff --git a/app/src/main/java/io/legado/app/help/source/SourceVerificationHelp.kt b/app/src/main/java/io/legado/app/help/source/SourceVerificationHelp.kt index 479c6ba26..338465638 100644 --- a/app/src/main/java/io/legado/app/help/source/SourceVerificationHelp.kt +++ b/app/src/main/java/io/legado/app/help/source/SourceVerificationHelp.kt @@ -43,6 +43,7 @@ object SourceVerificationHelp { putExtra("imageUrl", url) putExtra("sourceOrigin", source.getKey()) putExtra("sourceName", source.getTag()) + putExtra("sourceType", source.getSourceType()) IntentData.put(getVerificationResultKey(source), Thread.currentThread()) } } else { diff --git a/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmActivity.kt b/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmActivity.kt index ceb0978b1..b9efa3c86 100644 --- a/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmActivity.kt +++ b/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmActivity.kt @@ -2,6 +2,7 @@ package io.legado.app.ui.association import android.os.Bundle import io.legado.app.base.BaseActivity +import io.legado.app.constant.SourceType import io.legado.app.databinding.ActivityTranslucenceBinding import io.legado.app.utils.showDialogFragment import io.legado.app.utils.viewbindingdelegate.viewBinding @@ -16,7 +17,8 @@ class OpenUrlConfirmActivity : val mimeType = intent.getStringExtra("mimeType") val sourceOrigin = intent.getStringExtra("sourceOrigin") val sourceName = intent.getStringExtra("sourceName") - showDialogFragment(OpenUrlConfirmDialog(it, mimeType, sourceOrigin, sourceName)) + val sourceType = intent.getIntExtra("sourceType", SourceType.book) + showDialogFragment(OpenUrlConfirmDialog(it, mimeType, sourceOrigin, sourceName, sourceType)) } ?: finish() } diff --git a/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmDialog.kt b/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmDialog.kt index dbf3d443b..41b316d37 100644 --- a/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmDialog.kt +++ b/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmDialog.kt @@ -27,13 +27,15 @@ class OpenUrlConfirmDialog() : BaseDialogFragment(R.layout.dialog_open_url_confi uri: String, mimeType: String?, sourceOrigin: String? = null, - sourceName: String? = null + sourceName: String? = null, + sourceType: Int ) : this() { arguments = Bundle().apply { putString("uri", uri) putString("mimeType", mimeType) putString("sourceOrigin", sourceOrigin) putString("sourceName", sourceName) + putInt("sourceType", sourceType) } } diff --git a/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmViewModel.kt b/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmViewModel.kt index e677fb683..65db30882 100644 --- a/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/OpenUrlConfirmViewModel.kt @@ -3,7 +3,9 @@ package io.legado.app.ui.association import android.app.Application import android.os.Bundle import io.legado.app.base.BaseViewModel +import io.legado.app.constant.SourceType import io.legado.app.data.appDb +import io.legado.app.help.source.SourceHelp class OpenUrlConfirmViewModel(app: Application): BaseViewModel(app) { @@ -11,17 +13,19 @@ class OpenUrlConfirmViewModel(app: Application): BaseViewModel(app) { var mimeType: String? = null var sourceOrigin = "" var sourceName = "" + var sourceType = SourceType.book fun initData(arguments: Bundle) { uri = arguments.getString("uri") ?: "" mimeType = arguments.getString("mimeType") sourceName = arguments.getString("sourceName") ?: "" sourceOrigin = arguments.getString("sourceOrigin") ?: "" + sourceType = arguments.getInt("sourceType", SourceType.book) } fun disableSource(block: () -> Unit) { execute { - appDb.bookSourceDao.enable(sourceOrigin, false) + SourceHelp.enableSource(sourceOrigin, sourceType, false) }.onSuccess { block.invoke() } @@ -29,7 +33,7 @@ class OpenUrlConfirmViewModel(app: Application): BaseViewModel(app) { fun deleteSource(block: () -> Unit) { execute { - appDb.bookSourceDao.delete(sourceOrigin) + SourceHelp.deleteSource(sourceOrigin, sourceType) }.onSuccess { block.invoke() } diff --git a/app/src/main/java/io/legado/app/ui/association/VerificationCodeActivity.kt b/app/src/main/java/io/legado/app/ui/association/VerificationCodeActivity.kt index 1166abef5..a70a5f8ae 100644 --- a/app/src/main/java/io/legado/app/ui/association/VerificationCodeActivity.kt +++ b/app/src/main/java/io/legado/app/ui/association/VerificationCodeActivity.kt @@ -2,6 +2,7 @@ package io.legado.app.ui.association import android.os.Bundle import io.legado.app.base.BaseActivity +import io.legado.app.constant.SourceType import io.legado.app.databinding.ActivityTranslucenceBinding import io.legado.app.utils.showDialogFragment import io.legado.app.utils.viewbindingdelegate.viewBinding @@ -18,8 +19,9 @@ class VerificationCodeActivity : intent.getStringExtra("imageUrl")?.let { val sourceOrigin = intent.getStringExtra("sourceOrigin") val sourceName = intent.getStringExtra("sourceName") + val sourceType = intent.getIntExtra("sourceType", SourceType.book) showDialogFragment( - VerificationCodeDialog(it, sourceOrigin, sourceName) + VerificationCodeDialog(it, sourceOrigin, sourceName, sourceType) ) } ?: finish() } diff --git a/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt b/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt index 479ea71d0..c9c901f27 100644 --- a/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt +++ b/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt @@ -41,12 +41,14 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification constructor( imageUrl: String, sourceOrigin: String? = null, - sourceName: String? = null + sourceName: String? = null, + sourceType: Int ) : this() { arguments = Bundle().apply { putString("imageUrl", imageUrl) putString("sourceOrigin", sourceOrigin) putString("sourceName", sourceName) + putInt("sourceType", sourceType) } } diff --git a/app/src/main/java/io/legado/app/ui/association/VerificationCodeViewModel.kt b/app/src/main/java/io/legado/app/ui/association/VerificationCodeViewModel.kt index 3ea2434e8..3bb29170d 100644 --- a/app/src/main/java/io/legado/app/ui/association/VerificationCodeViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/VerificationCodeViewModel.kt @@ -3,21 +3,24 @@ package io.legado.app.ui.association import android.app.Application import android.os.Bundle import io.legado.app.base.BaseViewModel -import io.legado.app.data.appDb +import io.legado.app.constant.SourceType +import io.legado.app.help.source.SourceHelp class VerificationCodeViewModel(app: Application): BaseViewModel(app) { var sourceOrigin = "" var sourceName = "" + private var sourceType = SourceType.book fun initData(arguments: Bundle) { sourceName = arguments.getString("sourceName") ?: "" sourceOrigin = arguments.getString("sourceOrigin") ?: "" + sourceType = arguments.getInt("sourceType", SourceType.book) } fun disableSource(block: () -> Unit) { execute { - appDb.bookSourceDao.enable(sourceOrigin, false) + SourceHelp.enableSource(sourceOrigin, sourceType, false) }.onSuccess { block.invoke() } @@ -25,7 +28,7 @@ class VerificationCodeViewModel(app: Application): BaseViewModel(app) { fun deleteSource(block: () -> Unit) { execute { - appDb.bookSourceDao.delete(sourceOrigin) + SourceHelp.deleteSource(sourceOrigin, sourceType) }.onSuccess { block.invoke() } diff --git a/app/src/main/java/io/legado/app/ui/font/FontSelectDialog.kt b/app/src/main/java/io/legado/app/ui/font/FontSelectDialog.kt index cbe8910cd..c50993a17 100644 --- a/app/src/main/java/io/legado/app/ui/font/FontSelectDialog.kt +++ b/app/src/main/java/io/legado/app/ui/font/FontSelectDialog.kt @@ -124,7 +124,7 @@ class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select), } private fun openFolder() { - lifecycleScope.launch(Main) { + lifecycleScope.launch { val defaultPath = "SD${File.separator}Fonts" selectFontDir.launch { otherActions = arrayListOf(SelectItem(defaultPath, -1)) diff --git a/app/src/main/java/io/legado/app/ui/main/explore/ExploreViewModel.kt b/app/src/main/java/io/legado/app/ui/main/explore/ExploreViewModel.kt index 4006a610b..f5df02093 100644 --- a/app/src/main/java/io/legado/app/ui/main/explore/ExploreViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/explore/ExploreViewModel.kt @@ -5,6 +5,7 @@ import io.legado.app.base.BaseViewModel import io.legado.app.data.appDb import io.legado.app.data.entities.BookSourcePart import io.legado.app.help.config.SourceConfig +import io.legado.app.help.source.SourceHelp class ExploreViewModel(application: Application) : BaseViewModel(application) { @@ -18,8 +19,7 @@ class ExploreViewModel(application: Application) : BaseViewModel(application) { fun deleteSource(source: BookSourcePart) { execute { - appDb.bookSourceDao.delete(source.bookSourceUrl) - SourceConfig.removeSource(source.bookSourceUrl) + SourceHelp.deleteBookSource(source.bookSourceUrl) } } 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 3a73bc4cb..2762fb35e 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 @@ -1,6 +1,5 @@ package io.legado.app.ui.rss.source.edit -import android.app.Activity import android.os.Bundle import android.view.Menu import android.view.MenuItem @@ -127,7 +126,7 @@ class RssSourceEditActivity : override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.menu_save -> viewModel.save(getRssSource()) { - setResult(Activity.RESULT_OK) + setResult(RESULT_OK) finish() } 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 4c21c7a62..1f4595a64 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 @@ -9,8 +9,12 @@ import io.legado.app.data.entities.RssSource import io.legado.app.exception.NoStackTraceException import io.legado.app.help.RuleComplete import io.legado.app.help.http.CookieStore -import io.legado.app.utils.* - +import io.legado.app.utils.GSON +import io.legado.app.utils.fromJsonObject +import io.legado.app.utils.getClipText +import io.legado.app.utils.printOnDebug +import io.legado.app.utils.stackTraceStr +import io.legado.app.utils.toastOnUi import kotlinx.coroutines.Dispatchers @@ -39,7 +43,7 @@ class RssSourceEditViewModel(application: Application) : BaseViewModel(applicati rssSource?.let { appDb.rssSourceDao.delete(it) //更新收藏的源地址 - if (it.sourceUrl != source.sourceUrl){ + if (it.sourceUrl != source.sourceUrl) { appDb.rssStarDao.updateOrigin(source.sourceUrl, it.sourceUrl) appDb.rssArticleDao.updateOrigin(source.sourceUrl, it.sourceUrl) }