Sfoglia il codice sorgente

订阅源网页重定向 #171

HapeLee 1 anno fa
parent
commit
442bca1800

+ 3 - 2
app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt

@@ -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)
         }
         }
     }
     }
 
 

+ 3 - 4
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 {
         execute {
-            val source = rssSource ?: return@execute
-            source.redirectPolicy = redirectPolicy
-            appDb.rssSourceDao.updateRedirectPolicy(source.sourceUrl, redirectPolicy)
+            appDb.rssSourceDao.updateRedirectPolicy(sourceUrl, redirectPolicy)
+            rssSource?.redirectPolicy = redirectPolicy
         }.onError {
         }.onError {
             appCtx.toastOnUi("保存失败: ${it.localizedMessage}")
             appCtx.toastOnUi("保存失败: ${it.localizedMessage}")
         }
         }

+ 6 - 3
app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt

@@ -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

+ 3 - 4
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)
         tts?.speak(text)
     }
     }
 
 
-    fun updateRssSourceRedirectPolicy(redirectPolicy: String) {
+    fun updateRssSourceRedirectPolicy(sourceUrl: String, redirectPolicy: String) {
         execute {
         execute {
-            val source = rssSource ?: return@execute
-            source.redirectPolicy = redirectPolicy
-            appDb.rssSourceDao.updateRedirectPolicy(source.sourceUrl, redirectPolicy)
+            appDb.rssSourceDao.updateRedirectPolicy(sourceUrl, redirectPolicy)
+            rssSource?.redirectPolicy = redirectPolicy
         }.onError {
         }.onError {
             appCtx.toastOnUi("保存失败: ${it.localizedMessage}")
             appCtx.toastOnUi("保存失败: ${it.localizedMessage}")
         }
         }

+ 3 - 0
app/src/main/res/menu/menu_redirect_policy_submenu.xml

@@ -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 - 0
app/src/main/res/values-zh/strings.xml

@@ -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 - 0
app/src/main/res/values/strings.xml

@@ -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>