Fix crash on API < 30 and light theme (#2774)

This commit is contained in:
Benoit Marty 2021-02-04 12:22:12 +01:00 committed by Benoit Marty
parent a65f846929
commit 3c06517d9e
2 changed files with 29 additions and 20 deletions

View File

@ -8,7 +8,7 @@ Improvements 🙌:
- -
Bugfix 🐛: Bugfix 🐛:
- - Fix crash on API < 30 and light theme (#2774)
Translations 🗣: Translations 🗣:
- -

View File

@ -15,7 +15,6 @@
*/ */
package im.vector.app.features.popup package im.vector.app.features.popup
import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.os.Build import android.os.Build
import android.os.Handler import android.os.Handler
@ -158,27 +157,37 @@ class PopupAlertManager @Inject constructor(private val avatarRenderer: Lazy<Ava
} }
} }
@SuppressLint("InlinedApi")
private fun clearLightStatusBar() { private fun clearLightStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
weakCurrentActivity?.get() weakCurrentActivity?.get()
?.takeIf { Build.VERSION.SDK_INT >= Build.VERSION_CODES.M }
// Do not change anything on Dark themes // Do not change anything on Dark themes
?.takeIf { ThemeUtils.isLightTheme(it) } ?.takeIf { ThemeUtils.isLightTheme(it) }
?.let { it.window?.decorView } ?.window?.decorView
?.let { view -> ?.let { view ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
view.windowInsetsController?.setSystemBarsAppearance(0, APPEARANCE_LIGHT_STATUS_BARS) view.windowInsetsController?.setSystemBarsAppearance(0, APPEARANCE_LIGHT_STATUS_BARS)
} else {
@Suppress("DEPRECATION")
view.systemUiVisibility = view.systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv()
}
}
} }
} }
@SuppressLint("InlinedApi")
private fun setLightStatusBar() { private fun setLightStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
weakCurrentActivity?.get() weakCurrentActivity?.get()
?.takeIf { Build.VERSION.SDK_INT >= Build.VERSION_CODES.M }
// Do not change anything on Dark themes // Do not change anything on Dark themes
?.takeIf { ThemeUtils.isLightTheme(it) } ?.takeIf { ThemeUtils.isLightTheme(it) }
?.let { it.window?.decorView } ?.window?.decorView
?.let { view -> ?.let { view ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
view.windowInsetsController?.setSystemBarsAppearance(APPEARANCE_LIGHT_STATUS_BARS, APPEARANCE_LIGHT_STATUS_BARS) view.windowInsetsController?.setSystemBarsAppearance(APPEARANCE_LIGHT_STATUS_BARS, APPEARANCE_LIGHT_STATUS_BARS)
} else {
@Suppress("DEPRECATION")
view.systemUiVisibility = view.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
}
} }
} }