fix: 特殊情况下无法从夜间模式切换回正常模式

This commit is contained in:
HuanCheng65 2023-09-29 22:23:30 +08:00
parent 9d2640d8e9
commit 2f9ffde700
No known key found for this signature in database
GPG Key ID: 5EC9DD60A32C7360
1 changed files with 12 additions and 4 deletions

View File

@ -106,13 +106,21 @@ object ThemeUtil {
ThemeUtils.refreshUI(activity)
}
private fun getOldTheme(): String {
val oldTheme =
dataStore.getString(KEY_OLD_THEME, THEME_DEFAULT).takeUnless { isNightMode(it) }
return oldTheme ?: THEME_DEFAULT
}
fun switchTheme(newTheme: String, recordOldTheme: Boolean = true) {
if (recordOldTheme) {
val oldTheme = getTheme()
dataStore.putString(KEY_OLD_THEME, oldTheme)
if (!isNightMode(oldTheme)) {
dataStore.putString(KEY_OLD_THEME, oldTheme)
}
}
dataStore.putString(KEY_THEME, newTheme)
// dataStore.putBoolean(KEY_USE_DYNAMIC_THEME, false)
themeState.value = newTheme
}
@ -127,7 +135,7 @@ object ThemeUtil {
fun switchNightMode() {
if (isNightMode()) {
switchTheme(dataStore.getString(KEY_OLD_THEME, THEME_DEFAULT), recordOldTheme = false)
switchTheme(getOldTheme(), recordOldTheme = false)
} else {
switchTheme(dataStore.getString(KEY_DARK_THEME, THEME_AMOLED_DARK))
}
@ -142,7 +150,7 @@ object ThemeUtil {
@JvmOverloads
fun switchFromNightMode(context: Activity, recreate: Boolean = true) {
switchTheme(dataStore.getString(KEY_OLD_THEME, THEME_DEFAULT), recordOldTheme = false)
switchTheme(getOldTheme(), recordOldTheme = false)
if (recreate) {
refreshUI(context)
}