From 7207da8df4e43daea19b0207663e6bb1a2f03fab Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Thu, 30 Sep 2021 15:29:01 -0400 Subject: [PATCH] Use webpage's dark theme (if applicable) automatically if app is in dark mode So far only mangadex is the one I know with good support but its here now --- app/build.gradle.kts | 1 + .../ui/webview/BaseWebViewActivity.kt | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 963bcfe415..5cd879079a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -102,6 +102,7 @@ dependencies { implementation("androidx.appcompat:appcompat:1.3.1") implementation("androidx.cardview:cardview:1.0.0") implementation("com.google.android.material:material:1.4.0") + implementation("androidx.webkit:webkit:1.4.0") implementation("androidx.recyclerview:recyclerview:1.2.1") implementation("androidx.preference:preference:1.1.1") implementation("androidx.annotation:annotation:1.2.0") diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/BaseWebViewActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/BaseWebViewActivity.kt index af5a688b2b..2c1c5f2346 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/BaseWebViewActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/BaseWebViewActivity.kt @@ -16,6 +16,8 @@ import androidx.core.net.toUri import androidx.core.view.isInvisible import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams +import androidx.webkit.WebSettingsCompat.* +import androidx.webkit.WebViewFeature import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.WebviewActivityBinding import eu.kanade.tachiyomi.ui.base.activity.BaseActivity @@ -104,6 +106,7 @@ open class BaseWebViewActivity : BaseActivity() { insets } + setWebDarkMode() binding.swipeRefresh.isEnabled = false if (bundle == null) { @@ -134,6 +137,21 @@ open class BaseWebViewActivity : BaseActivity() { } } + private fun setWebDarkMode() { + if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) { + setForceDarkStrategy( + binding.webview.settings, + DARK_STRATEGY_WEB_THEME_DARKENING_ONLY + ) + if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) { + setForceDark( + binding.webview.settings, + if (isInNightMode()) FORCE_DARK_ON else FORCE_DARK_OFF + ) + } + } + } + override fun onProvideAssistContent(outContent: AssistContent?) { super.onProvideAssistContent(outContent) binding.webview.url?.let { outContent?.webUri = it.toUri() } @@ -159,7 +177,7 @@ open class BaseWebViewActivity : BaseActivity() { getResourceColor(R.attr.colorSurface), 255 ) - binding.toolbar.setBackgroundColor(getResourceColor(R.attr.colorSecondary)) + setWebDarkMode() binding.toolbar.setBackgroundColor(getResourceColor(R.attr.colorSurface)) binding.toolbar.popupTheme = if (lightMode) R.style.ThemeOverlay_MaterialComponents else R .style.ThemeOverlay_MaterialComponents_Dark