diff --git a/app/src/main/java/io/legado/app/data/dao/RuleSubDao.kt b/app/src/main/java/io/legado/app/data/dao/RuleSubDao.kt index a8056baae..d5aea29ad 100644 --- a/app/src/main/java/io/legado/app/data/dao/RuleSubDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/RuleSubDao.kt @@ -16,6 +16,9 @@ interface RuleSubDao { @get:Query("select customOrder from ruleSubs order by customOrder limit 0,1") val maxOrder: Int + @Query("select * from ruleSubs where url = :url") + fun findByUrl(url: String): RuleSub? + @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(vararg ruleSub: RuleSub) diff --git a/app/src/main/java/io/legado/app/ui/rss/subscription/RuleSubActivity.kt b/app/src/main/java/io/legado/app/ui/rss/subscription/RuleSubActivity.kt index 78aa3d7da..c7a74a318 100644 --- a/app/src/main/java/io/legado/app/ui/rss/subscription/RuleSubActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/subscription/RuleSubActivity.kt @@ -18,8 +18,10 @@ import io.legado.app.ui.association.ImportReplaceRuleActivity import io.legado.app.ui.association.ImportRssSourceActivity import io.legado.app.ui.widget.recycler.ItemTouchCallback import io.legado.app.utils.startActivity +import io.legado.app.utils.toastOnUi import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext /** * 规则订阅界面 @@ -100,11 +102,20 @@ class RuleSubActivity : BaseActivity(), } customView { alertBinding.root } okButton { - ruleSub.type = alertBinding.spType.selectedItemPosition - ruleSub.name = alertBinding.etName.text?.toString() ?: "" - ruleSub.url = alertBinding.etUrl.text?.toString() ?: "" - launch(IO) { - appDb.ruleSubDao.insert(ruleSub) + launch { + ruleSub.type = alertBinding.spType.selectedItemPosition + ruleSub.name = alertBinding.etName.text?.toString() ?: "" + ruleSub.url = alertBinding.etUrl.text?.toString() ?: "" + val rs = withContext(IO) { + appDb.ruleSubDao.findByUrl(ruleSub.url) + } + if (rs != null && rs.id != ruleSub.id) { + toastOnUi(R.string.url_already) + return@launch + } + withContext(IO) { + appDb.ruleSubDao.insert(ruleSub) + } } } cancelButton() diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index ec507138c..29e200c8c 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -819,5 +819,6 @@ 目录源码 正文源码 列表源码 + 此url已订阅 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0b7551fc5..f7f2c0359 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -821,5 +821,6 @@ 目录源码 正文源码 列表源码 + 此url已订阅 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 0889ca112..05aa55b5a 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -823,5 +823,6 @@ 目录源码 正文源码 列表源码 + 此url已订阅 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index da4faf74d..04b53023e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -826,5 +826,6 @@ 目录源码 正文源码 列表源码 + 此url已订阅