feat: whitelist for notification listening

This commit is contained in:
2024-07-14 06:54:41 +02:00
committed by Illusion
parent edd5b24d92
commit a0baf0f476
10 changed files with 256 additions and 8 deletions
@@ -4,6 +4,7 @@ import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.intPreferencesKey
import androidx.datastore.preferences.core.stringSetPreferencesKey
import kotlinx.coroutines.flow.map
enum class Theme {
@@ -14,6 +15,7 @@ enum class Theme {
data class SettingsPreferences(
val appTheme: Int = Theme.SYSTEM.ordinal,
val whitelist: Set<String> = emptySet(),
)
class SettingsPreferencesRepository(
@@ -21,6 +23,7 @@ class SettingsPreferencesRepository(
) {
companion object {
private val APP_THEME = intPreferencesKey("app_theme")
private val WHITELIST = stringSetPreferencesKey("apps_whitelist")
}
val preferences = dataStore.data.map { mapSettingsPreferences(it) }
@@ -31,9 +34,22 @@ class SettingsPreferencesRepository(
}
}
suspend fun addToWhitelist(packageName: String) {
dataStore.edit { prefs ->
prefs[WHITELIST] = (prefs[WHITELIST]?.toMutableSet() ?: emptySet()) + packageName
}
}
suspend fun removeFromWhitelist(packageName: String) {
dataStore.edit { prefs ->
prefs[WHITELIST] = (prefs[WHITELIST]?.toMutableSet() ?: emptySet()) - packageName
}
}
private fun mapSettingsPreferences(prefs: Preferences): SettingsPreferences {
return SettingsPreferences(
prefs[APP_THEME] ?: Theme.SYSTEM.ordinal,
prefs[WHITELIST] ?: emptySet(),
)
}
}