theme related bug fixes #8
Auto Tag on Version Change / check-version (push) Successful in 6s

This commit is contained in:
2026-06-03 14:00:52 +05:00
parent ceaad0e313
commit f575941141
2 changed files with 15 additions and 3 deletions
@@ -2,6 +2,7 @@ package sh.sar.basedbank.ui.home
import android.content.Context
import android.content.SharedPreferences
import android.content.res.Configuration
import android.graphics.Color
import android.os.Bundle
import android.text.InputType
@@ -135,6 +136,7 @@ class SettingsAppearanceFragment : Fragment() {
})
binding.themeToggle.addOnButtonCheckedListener { _, checkedId, isChecked ->
if (!isChecked) return@addOnButtonCheckedListener
val previousKey = prefs.getString("theme", "system")
val (key, mode) = when (checkedId) {
R.id.btnThemeLight -> "light" to AppCompatDelegate.MODE_NIGHT_NO
R.id.btnThemeDark -> "dark" to AppCompatDelegate.MODE_NIGHT_YES
@@ -144,6 +146,16 @@ class SettingsAppearanceFragment : Fragment() {
AppCompatDelegate.setDefaultNightMode(mode)
updateAccentState(key == "system")
updatePitchBlackState(key == "dark")
if (key == "system") {
requireActivity().recreate()
} else if (previousKey == "system") {
// setDefaultNightMode only recreates if the effective mode changes.
// If system was already dark and we switch to dark (or light→light),
// no recreation is triggered and the custom accent never gets applied.
val currentIsNight = (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES
val newIsNight = mode == AppCompatDelegate.MODE_NIGHT_YES
if (currentIsNight == newIsNight) requireActivity().recreate()
}
}
// Pitch black
@@ -158,7 +170,7 @@ class SettingsAppearanceFragment : Fragment() {
// Accent color
val savedPreset = prefs.getString("accent_preset", ThemeHelper.PRESET_BLUE)
binding.accentToggle.check(when (savedPreset) {
ThemeHelper.PRESET_RED -> R.id.btnAccentOrange
ThemeHelper.PRESET_RED -> R.id.btnAccentOrange
ThemeHelper.PRESET_GREEN -> R.id.btnAccentGreen
ThemeHelper.PRESET_CUSTOM -> R.id.btnAccentCustom
else -> R.id.btnAccentBlue