From a4dd8e29c22aa48b39fdabfd6fd489a16d81d9c9 Mon Sep 17 00:00:00 2001 From: Den Date: Tue, 15 Nov 2022 14:09:52 +0200 Subject: [PATCH] Fixed day/night UI issue (#2074) * Fixed NPE in GmailApiHelper.generateGmailApiService().| #2072 * Modified WebView.setupDayNight(). Step 2.| #2026 * Modified WebView.setupDayNight(). Step 3.| #2026 --- .../extensions/android/webkit/WebViewExt.kt | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/extensions/android/webkit/WebViewExt.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/extensions/android/webkit/WebViewExt.kt index 963be35ff7..72fcd2f9cb 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/extensions/android/webkit/WebViewExt.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/extensions/android/webkit/WebViewExt.kt @@ -7,6 +7,7 @@ package com.flowcrypt.email.extensions.android.webkit import android.content.res.Configuration import android.graphics.Color +import android.os.Build import android.webkit.WebView import androidx.webkit.WebSettingsCompat import androidx.webkit.WebViewFeature @@ -18,15 +19,31 @@ import androidx.webkit.WebViewFeature * E-mail: DenBond7@gmail.com */ fun WebView.setupDayNight() { - if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) { - setBackgroundColor(Color.TRANSPARENT) - when (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) { - Configuration.UI_MODE_NIGHT_YES -> { - WebSettingsCompat.setForceDark(settings, WebSettingsCompat.FORCE_DARK_ON) - } - Configuration.UI_MODE_NIGHT_NO, Configuration.UI_MODE_NIGHT_UNDEFINED -> { - WebSettingsCompat.setForceDark(settings, WebSettingsCompat.FORCE_DARK_OFF) + setBackgroundColor(Color.TRANSPARENT) + if (WebViewFeature.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING)) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + WebSettingsCompat.setAlgorithmicDarkeningAllowed(settings, true) + } + } else { + if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) { + when (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) { + Configuration.UI_MODE_NIGHT_YES -> { + @Suppress("DEPRECATION") + WebSettingsCompat.setForceDark(settings, WebSettingsCompat.FORCE_DARK_ON) + } + Configuration.UI_MODE_NIGHT_NO, Configuration.UI_MODE_NIGHT_UNDEFINED -> { + @Suppress("DEPRECATION") + WebSettingsCompat.setForceDark(settings, WebSettingsCompat.FORCE_DARK_OFF) + } } } + + if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) { + @Suppress("DEPRECATION") + WebSettingsCompat.setForceDarkStrategy( + settings, + WebSettingsCompat.DARK_STRATEGY_PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING + ) + } } }