diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt index 3e931cf98..c0f523806 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt @@ -141,6 +141,7 @@ class RssSortActivity : VMBaseActivity R.id.menu_redirect_ask_always RedirectPolicy.ASK_CROSS_ORIGIN -> R.id.menu_redirect_ask_cross_origin RedirectPolicy.BLOCK_CROSS_ORIGIN -> R.id.menu_redirect_block_cross_origin + RedirectPolicy.BLOCK_ALL -> R.id.menu_redirect_block_all } menu.findItem(menuItemId)?.isChecked = true } @@ -151,6 +152,7 @@ class RssSortActivity : VMBaseActivity RedirectPolicy.ASK_ALWAYS R.id.menu_redirect_ask_cross_origin -> RedirectPolicy.ASK_CROSS_ORIGIN R.id.menu_redirect_block_cross_origin -> RedirectPolicy.BLOCK_CROSS_ORIGIN + R.id.menu_redirect_block_all -> RedirectPolicy.BLOCK_ALL else -> RedirectPolicy.ALLOW_ALL } @@ -160,9 +162,8 @@ class RssSortActivity : VMBaseActivity - source.redirectPolicy = policy.name + viewModel.updateRssSourceRedirectPolicy(source.sourceUrl, policy.name) redirectPolicy = policy - viewModel.updateRssSourceRedirectPolicy(source.sourceUrl) } } diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssSortViewModel.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssSortViewModel.kt index 6b3aa73c3..2d208adc6 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssSortViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssSortViewModel.kt @@ -94,11 +94,10 @@ class RssSortViewModel(application: Application) : BaseViewModel(application) { } } - fun updateRssSourceRedirectPolicy(redirectPolicy: String) { + fun updateRssSourceRedirectPolicy(sourceUrl: String, redirectPolicy: String) { execute { - val source = rssSource ?: return@execute - source.redirectPolicy = redirectPolicy - appDb.rssSourceDao.updateRedirectPolicy(source.sourceUrl, redirectPolicy) + appDb.rssSourceDao.updateRedirectPolicy(sourceUrl, redirectPolicy) + rssSource?.redirectPolicy = redirectPolicy }.onError { appCtx.toastOnUi("保存失败: ${it.localizedMessage}") } diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt index f1f37f0e4..20e6866d9 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt @@ -80,7 +80,8 @@ class ReadRssActivity : VMBaseActivity ALLOW_ALL, ASK_ALWAYS, ASK_CROSS_ORIGIN, - BLOCK_CROSS_ORIGIN; + BLOCK_CROSS_ORIGIN, + BLOCK_ALL; companion object { fun fromString(value: String?): RedirectPolicy { @@ -245,6 +246,7 @@ class ReadRssActivity : VMBaseActivity RedirectPolicy.ASK_ALWAYS -> R.id.menu_redirect_ask_always RedirectPolicy.ASK_CROSS_ORIGIN -> R.id.menu_redirect_ask_cross_origin RedirectPolicy.BLOCK_CROSS_ORIGIN -> R.id.menu_redirect_block_cross_origin + RedirectPolicy.BLOCK_ALL -> R.id.menu_redirect_block_all } menu.findItem(menuItemId)?.isChecked = true } @@ -255,6 +257,7 @@ class ReadRssActivity : VMBaseActivity R.id.menu_redirect_ask_always -> RedirectPolicy.ASK_ALWAYS R.id.menu_redirect_ask_cross_origin -> RedirectPolicy.ASK_CROSS_ORIGIN R.id.menu_redirect_block_cross_origin -> RedirectPolicy.BLOCK_CROSS_ORIGIN + R.id.menu_redirect_block_all -> RedirectPolicy.BLOCK_ALL else -> RedirectPolicy.ALLOW_ALL } @@ -370,9 +373,8 @@ class ReadRssActivity : VMBaseActivity fun updateRedirectPolicy(policy: RedirectPolicy) { viewModel.rssSource?.let { source -> - source.redirectPolicy = policy.name + viewModel.updateRssSourceRedirectPolicy(source.sourceUrl, policy.name) redirectPolicy = policy - viewModel.updateRssSourceRedirectPolicy(source.sourceUrl) } } @@ -487,6 +489,7 @@ class ReadRssActivity : VMBaseActivity return when (redirectPolicy) { RedirectPolicy.ALLOW_ALL -> false + RedirectPolicy.BLOCK_ALL -> true RedirectPolicy.ASK_ALWAYS -> { askUser(fromUrl, toUrl) { if (it) view.loadUrl(toUrl) } true diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssViewModel.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssViewModel.kt index 6cd89ed33..7c21a73a9 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssViewModel.kt @@ -243,11 +243,10 @@ class ReadRssViewModel(application: Application) : BaseViewModel(application) { tts?.speak(text) } - fun updateRssSourceRedirectPolicy(redirectPolicy: String) { + fun updateRssSourceRedirectPolicy(sourceUrl: String, redirectPolicy: String) { execute { - val source = rssSource ?: return@execute - source.redirectPolicy = redirectPolicy - appDb.rssSourceDao.updateRedirectPolicy(source.sourceUrl, redirectPolicy) + appDb.rssSourceDao.updateRedirectPolicy(sourceUrl, redirectPolicy) + rssSource?.redirectPolicy = redirectPolicy }.onError { appCtx.toastOnUi("保存失败: ${it.localizedMessage}") } diff --git a/app/src/main/res/menu/menu_redirect_policy_submenu.xml b/app/src/main/res/menu/menu_redirect_policy_submenu.xml index 23701bdad..785a7932a 100644 --- a/app/src/main/res/menu/menu_redirect_policy_submenu.xml +++ b/app/src/main/res/menu/menu_redirect_policy_submenu.xml @@ -13,5 +13,8 @@ + \ No newline at end of file diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 6f6441a15..5196313d1 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1318,4 +1318,5 @@ 总是询问 跨域时询问 阻止跨域重定向 + 阻止所有重定向 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3a3a1243a..0fac2013c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1319,4 +1319,5 @@ 总是询问 跨域时询问 阻止跨域重定向 + 阻止所有重定向