Skip to content

Commit 38fbd16

Browse files
committed
feat: replace requiresModernWebView() with minimumWebViewVersion property
1 parent ed5cc00 commit 38fbd16

3 files changed

Lines changed: 17 additions & 9 deletions

File tree

AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiPackageImporterFragment.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,15 @@ import com.ichi2.anki.CollectionManager
2525
import com.ichi2.anki.R
2626
import com.ichi2.anki.SingleFragmentActivity
2727
import com.ichi2.anki.hideShowButtonCss
28+
import com.ichi2.utils.OLDEST_WORKING_WEBVIEW_VERSION
2829

2930
class AnkiPackageImporterFragment : PageFragment() {
3031
override val pagePath: String by lazy {
3132
val filePath = requireArguments().getString(KEY_FILE_PATH)
3233
"import-anki-package$filePath"
3334
}
3435

35-
override fun requiresModernWebView() = true
36+
override val minimumWebViewVersion: Int = OLDEST_WORKING_WEBVIEW_VERSION
3637

3738
override fun onCreateWebViewClient(savedInstanceState: Bundle?): PageWebViewClient {
3839
// the back callback is only enabled when import is running and showing progress

AnkiDroid/src/main/java/com/ichi2/anki/pages/CsvImporter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.ichi2.anki.CollectionManager
2727
import com.ichi2.anki.R
2828
import com.ichi2.anki.SingleFragmentActivity
2929
import com.ichi2.anki.hideShowButtonCss
30+
import com.ichi2.utils.OLDEST_WORKING_WEBVIEW_VERSION
3031

3132
/**
3233
* Anki page used to import text/csv files
@@ -37,7 +38,7 @@ class CsvImporter : PageFragment() {
3738
"import-csv$filePath"
3839
}
3940

40-
override fun requiresModernWebView() = true
41+
override val minimumWebViewVersion: Int = OLDEST_WORKING_WEBVIEW_VERSION
4142

4243
override fun onCreateWebViewClient(savedInstanceState: Bundle?): PageWebViewClient {
4344
// the back callback is only enabled when import is running and showing progress

AnkiDroid/src/main/java/com/ichi2/anki/pages/PageFragment.kt

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import com.ichi2.anki.R
3131
import com.ichi2.anki.workarounds.OnWebViewRecreatedListener
3232
import com.ichi2.anki.workarounds.SafeWebViewLayout
3333
import com.ichi2.themes.Themes
34-
import com.ichi2.utils.checkWebviewVersion
34+
import com.ichi2.utils.showDialogIfWebViewOutdated
3535
import timber.log.Timber
3636

3737
/**
@@ -66,7 +66,7 @@ abstract class PageFragment(
6666

6767
protected open fun onWebViewCreated() { }
6868

69-
protected open fun requiresModernWebView(): Boolean = false
69+
protected open val minimumWebViewVersion: Int? = null
7070

7171
/**
7272
* When the webview calls `BridgeCommand("foo")`, the PageFragment execute `bridgeCommands["foo"]`.
@@ -106,14 +106,20 @@ abstract class PageFragment(
106106
savedInstanceState: Bundle?,
107107
) {
108108
val ankiActivity = requireActivity() as AnkiActivity
109-
if (requiresModernWebView() && checkWebviewVersion(ankiActivity)) {
110-
Timber.w("${this::class.simpleName} requires modern WebView (Chrome 90+), aborting load")
111-
ankiActivity.onBackPressedDispatcher.onBackPressed()
112-
return
113-
}
114109
server = AnkiServer(this).also { it.start() }
115110
webViewLayout = view.findViewById(R.id.webview_layout)
116111

112+
val minVersion = minimumWebViewVersion
113+
if (minVersion != null &&
114+
with(ankiActivity) {
115+
showDialogIfWebViewOutdated(minVersion) {
116+
ankiActivity.onBackPressedDispatcher.onBackPressed()
117+
}
118+
}
119+
) {
120+
Timber.w("${this::class.simpleName} requires modern WebView (Chrome 90+), aborting load")
121+
return
122+
}
117123
view.findViewById<MaterialToolbar>(R.id.toolbar)?.setNavigationOnClickListener {
118124
requireActivity().onBackPressedDispatcher.onBackPressed()
119125
}

0 commit comments

Comments
 (0)