订阅源网页重定向 #171

This commit is contained in:
HapeLee
2025-10-29 12:41:59 +08:00
parent 5a72c35432
commit 442bca1800
7 changed files with 20 additions and 13 deletions
@@ -141,6 +141,7 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
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
}
@@ -151,6 +152,7 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
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
}
@@ -160,9 +162,8 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
fun updateRedirectPolicy(policy: RedirectPolicy) {
viewModel.rssSource?.let { source ->
source.redirectPolicy = policy.name
viewModel.updateRssSourceRedirectPolicy(source.sourceUrl, policy.name)
redirectPolicy = policy
viewModel.updateRssSourceRedirectPolicy(source.sourceUrl)
}
}
@@ -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}")
}
@@ -80,7 +80,8 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
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<ActivityRssReadBinding, ReadRssViewModel>
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<ActivityRssReadBinding, ReadRssViewModel>
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<ActivityRssReadBinding, ReadRssViewModel>
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<ActivityRssReadBinding, ReadRssViewModel>
return when (redirectPolicy) {
RedirectPolicy.ALLOW_ALL -> false
RedirectPolicy.BLOCK_ALL -> true
RedirectPolicy.ASK_ALWAYS -> {
askUser(fromUrl, toUrl) { if (it) view.loadUrl(toUrl) }
true
@@ -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}")
}