订阅源网页重定向 #171

This commit is contained in:
HapeLee committed 2025-10-29 12:41:59 +08:00
1 parent 5a72c35432
commit 442bca1800
7 files changed
+20 -13

No files matched your search

@@ -141,6 +141,7 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
RedirectPolicy.ASK_ALWAYS -> R.id.menu_redirect_ask_always RedirectPolicy.ASK_ALWAYS -> R.id.menu_redirect_ask_always
RedirectPolicy.ASK_CROSS_ORIGIN -> R.id.menu_redirect_ask_cross_origin RedirectPolicy.ASK_CROSS_ORIGIN -> R.id.menu_redirect_ask_cross_origin
RedirectPolicy.BLOCK_CROSS_ORIGIN -> R.id.menu_redirect_block_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 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_always -> RedirectPolicy.ASK_ALWAYS
R.id.menu_redirect_ask_cross_origin -> RedirectPolicy.ASK_CROSS_ORIGIN 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_cross_origin -> RedirectPolicy.BLOCK_CROSS_ORIGIN
R.id.menu_redirect_block_all -> RedirectPolicy.BLOCK_ALL
else -> RedirectPolicy.ALLOW_ALL else -> RedirectPolicy.ALLOW_ALL
} }
@@ -160,9 +162,8 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
fun updateRedirectPolicy(policy: RedirectPolicy) { fun updateRedirectPolicy(policy: RedirectPolicy) {
viewModel.rssSource?.let { source -> viewModel.rssSource?.let { source ->
source.redirectPolicy = policy.name viewModel.updateRssSourceRedirectPolicy(source.sourceUrl, policy.name)
redirectPolicy = policy 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 { execute {
val source = rssSource ?: return@execute appDb.rssSourceDao.updateRedirectPolicy(sourceUrl, redirectPolicy)
source.redirectPolicy = redirectPolicy rssSource?.redirectPolicy = redirectPolicy
appDb.rssSourceDao.updateRedirectPolicy(source.sourceUrl, redirectPolicy)
}.onError { }.onError {
appCtx.toastOnUi("保存失败: ${it.localizedMessage}") appCtx.toastOnUi("保存失败: ${it.localizedMessage}")
} }
@@ -80,7 +80,8 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
ALLOW_ALL, ALLOW_ALL,
ASK_ALWAYS, ASK_ALWAYS,
ASK_CROSS_ORIGIN, ASK_CROSS_ORIGIN,
BLOCK_CROSS_ORIGIN; BLOCK_CROSS_ORIGIN,
BLOCK_ALL;
companion object { companion object {
fun fromString(value: String?): RedirectPolicy { 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_ALWAYS -> R.id.menu_redirect_ask_always
RedirectPolicy.ASK_CROSS_ORIGIN -> R.id.menu_redirect_ask_cross_origin RedirectPolicy.ASK_CROSS_ORIGIN -> R.id.menu_redirect_ask_cross_origin
RedirectPolicy.BLOCK_CROSS_ORIGIN -> R.id.menu_redirect_block_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 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_always -> RedirectPolicy.ASK_ALWAYS
R.id.menu_redirect_ask_cross_origin -> RedirectPolicy.ASK_CROSS_ORIGIN 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_cross_origin -> RedirectPolicy.BLOCK_CROSS_ORIGIN
R.id.menu_redirect_block_all -> RedirectPolicy.BLOCK_ALL
else -> RedirectPolicy.ALLOW_ALL else -> RedirectPolicy.ALLOW_ALL
} }
@@ -370,9 +373,8 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
fun updateRedirectPolicy(policy: RedirectPolicy) { fun updateRedirectPolicy(policy: RedirectPolicy) {
viewModel.rssSource?.let { source -> viewModel.rssSource?.let { source ->
source.redirectPolicy = policy.name viewModel.updateRssSourceRedirectPolicy(source.sourceUrl, policy.name)
redirectPolicy = policy redirectPolicy = policy
viewModel.updateRssSourceRedirectPolicy(source.sourceUrl)
} }
} }
@@ -487,6 +489,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
return when (redirectPolicy) { return when (redirectPolicy) {
RedirectPolicy.ALLOW_ALL -> false RedirectPolicy.ALLOW_ALL -> false
RedirectPolicy.BLOCK_ALL -> true
RedirectPolicy.ASK_ALWAYS -> { RedirectPolicy.ASK_ALWAYS -> {
askUser(fromUrl, toUrl) { if (it) view.loadUrl(toUrl) } askUser(fromUrl, toUrl) { if (it) view.loadUrl(toUrl) }
true true
@@ -243,11 +243,10 @@ class ReadRssViewModel(application: Application) : BaseViewModel(application) {
tts?.speak(text) tts?.speak(text)
} }
fun updateRssSourceRedirectPolicy(redirectPolicy: String) { fun updateRssSourceRedirectPolicy(sourceUrl: String, redirectPolicy: String) {
execute { execute {
val source = rssSource ?: return@execute appDb.rssSourceDao.updateRedirectPolicy(sourceUrl, redirectPolicy)
source.redirectPolicy = redirectPolicy rssSource?.redirectPolicy = redirectPolicy
appDb.rssSourceDao.updateRedirectPolicy(source.sourceUrl, redirectPolicy)
}.onError { }.onError {
appCtx.toastOnUi("保存失败: ${it.localizedMessage}") appCtx.toastOnUi("保存失败: ${it.localizedMessage}")
} }
@@ -13,5 +13,8 @@
<item <item
android:id="@+id/menu_redirect_block_cross_origin" android:id="@+id/menu_redirect_block_cross_origin"
android:title="@string/redirect_block_cross_origin" /> android:title="@string/redirect_block_cross_origin" />
<item
android:id="@+id/menu_redirect_block_all"
android:title="@string/redirect_block_all" />
</group> </group>
</menu> </menu>
+1
View File
@@ -1318,4 +1318,5 @@
<string name="redirect_ask_always">总是询问</string> <string name="redirect_ask_always">总是询问</string>
<string name="redirect_ask_cross_origin">跨域时询问</string> <string name="redirect_ask_cross_origin">跨域时询问</string>
<string name="redirect_block_cross_origin">阻止跨域重定向</string> <string name="redirect_block_cross_origin">阻止跨域重定向</string>
<string name="redirect_block_all">阻止所有重定向</string>
</resources> </resources>
+1
View File
@@ -1319,4 +1319,5 @@
<string name="redirect_ask_always">总是询问</string> <string name="redirect_ask_always">总是询问</string>
<string name="redirect_ask_cross_origin">跨域时询问</string> <string name="redirect_ask_cross_origin">跨域时询问</string>
<string name="redirect_block_cross_origin">阻止跨域重定向</string> <string name="redirect_block_cross_origin">阻止跨域重定向</string>
<string name="redirect_block_all">阻止所有重定向</string>
</resources> </resources>