Skip to content

Commit

Permalink
restrict deck option links
Browse files Browse the repository at this point in the history
  • Loading branch information
RobozinhoD committed Jul 14, 2024
1 parent 2c959dc commit 260fb7e
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions AnkiDroid/src/main/java/com/ichi2/anki/pages/DeckOptions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,16 @@ package com.ichi2.anki.pages
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.webkit.WebResourceRequest
import android.webkit.WebView
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.FragmentActivity
import anki.collection.OpChanges
import com.ichi2.anki.CollectionManager
import com.ichi2.anki.OnPageFinishedCallback
import com.ichi2.anki.R
import com.ichi2.anki.dialogs.DiscardChangesDialog
import com.ichi2.anki.utils.openUrl
import com.ichi2.anki.withProgress
import com.ichi2.annotations.NeedsTest
import com.ichi2.libanki.undoableOp
Expand Down Expand Up @@ -60,10 +63,28 @@ class DeckOptions : PageFragment() {
override fun onCreateWebViewClient(savedInstanceState: Bundle?): PageWebViewClient {
requireActivity().onBackPressedDispatcher.addCallback(this, onBackSaveCallback)
requireActivity().onBackPressedDispatcher.addCallback(this, onBackCallback)
return PageWebViewClient().apply {
onPageFinishedCallback = OnPageFinishedCallback { view ->
Timber.v("canGoBack: %b", view.canGoBack())
onBackCallback.isEnabled = view.canGoBack()

return object : PageWebViewClient() {
private val ankiManualHostRegex = Regex("^docs\\.ankiweb\\.net\$")

init {
onPageFinishedCallback = OnPageFinishedCallback { view ->
Timber.v("canGoBack: %b", view.canGoBack())
onBackCallback.isEnabled = view.canGoBack()
}
}

override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
val host = request?.url?.host ?: return shouldOverrideUrlLoading(view, request)
return if (ankiManualHostRegex.matches(host)) {
super.shouldOverrideUrlLoading(view, request)
} else {
openUrl(request.url)
true
}
}
}
}
Expand Down

0 comments on commit 260fb7e

Please sign in to comment.