diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-09-18 14:03:48 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-09-18 20:29:23 +0200 |
commit | d200437813ae09769dc90820ded3911a324601ca (patch) | |
tree | a0092ae87fb90afa70c67c4ed3715c5f1c2e1da6 /ui/src/main/java/com/wireguard/android/activity/ThemeChangeAwareActivity.kt | |
parent | ui: reformat code (diff) | |
download | wireguard-android-d200437813ae09769dc90820ded3911a324601ca.tar.xz wireguard-android-d200437813ae09769dc90820ded3911a324601ca.zip |
ui: move to Jetpack DataStore instead of SharedPrefs
Hopefully PreferencesPreferenceDataStore gets to go away sometime down
the line.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui/src/main/java/com/wireguard/android/activity/ThemeChangeAwareActivity.kt')
-rw-r--r-- | ui/src/main/java/com/wireguard/android/activity/ThemeChangeAwareActivity.kt | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/ui/src/main/java/com/wireguard/android/activity/ThemeChangeAwareActivity.kt b/ui/src/main/java/com/wireguard/android/activity/ThemeChangeAwareActivity.kt index bd124cbc..3ebfbaaa 100644 --- a/ui/src/main/java/com/wireguard/android/activity/ThemeChangeAwareActivity.kt +++ b/ui/src/main/java/com/wireguard/android/activity/ThemeChangeAwareActivity.kt @@ -4,39 +4,30 @@ */ package com.wireguard.android.activity -import android.content.SharedPreferences -import android.content.SharedPreferences.OnSharedPreferenceChangeListener import android.os.Build import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate -import com.wireguard.android.Application +import androidx.lifecycle.lifecycleScope +import com.wireguard.android.util.UserKnobs +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach -abstract class ThemeChangeAwareActivity : AppCompatActivity(), OnSharedPreferenceChangeListener { +abstract class ThemeChangeAwareActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { - Application.getSharedPreferences().registerOnSharedPreferenceChangeListener(this) - } - } - - override fun onDestroy() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { - Application.getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this) - } - super.onDestroy() - } - - override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) { - when (key) { - "dark_theme" -> { - AppCompatDelegate.setDefaultNightMode(if (sharedPreferences.getBoolean(key, false)) { + UserKnobs.darkTheme.onEach { + val newMode = if (it) { AppCompatDelegate.MODE_NIGHT_YES } else { AppCompatDelegate.MODE_NIGHT_NO - }) - recreate() - } + } + if (AppCompatDelegate.getDefaultNightMode() != newMode) { + AppCompatDelegate.setDefaultNightMode(newMode) + recreate() + } + }.launchIn(lifecycleScope) } } } |