Files
GPS2Audio/app/src/main/kotlin/de/waypointaudio/data/HomeModulesSettings.kt
T
2026-05-30 05:42:44 +00:00

54 lines
1.8 KiB
Kotlin

package de.waypointaudio.data
import android.content.Context
import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.preferencesDataStore
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
/**
* v2.5.0 — Sichtbarkeitsoptionen für die optionalen Module der neuen
* Audio-Bibliothek-Hauptseite. PTT- und Atmo-Modul lassen sich
* unabhängig ein- und ausblenden ("Startseite anpassen").
*
* Default: beide Module sind sichtbar, damit bestehende Nutzer ihren
* bisherigen Zugang zu Live-PTT und Atmo nicht verlieren.
*/
data class HomeModulesSettings(
val showPtt: Boolean = true,
val showAtmo: Boolean = true,
val showMiniNowPlaying: Boolean = true
)
private val Context.homeModulesDataStore by preferencesDataStore(name = "home_modules_settings")
class HomeModulesSettingsStore(private val context: Context) {
private companion object {
val KEY_SHOW_PTT = booleanPreferencesKey("show_ptt")
val KEY_SHOW_ATMO = booleanPreferencesKey("show_atmo")
val KEY_SHOW_MINI_NOW = booleanPreferencesKey("show_mini_now")
}
val settings: Flow<HomeModulesSettings> = context.homeModulesDataStore.data.map { prefs ->
HomeModulesSettings(
showPtt = prefs[KEY_SHOW_PTT] ?: true,
showAtmo = prefs[KEY_SHOW_ATMO] ?: true,
showMiniNowPlaying = prefs[KEY_SHOW_MINI_NOW] ?: true
)
}
suspend fun setShowPtt(value: Boolean) {
context.homeModulesDataStore.edit { it[KEY_SHOW_PTT] = value }
}
suspend fun setShowAtmo(value: Boolean) {
context.homeModulesDataStore.edit { it[KEY_SHOW_ATMO] = value }
}
suspend fun setShowMiniNowPlaying(value: Boolean) {
context.homeModulesDataStore.edit { it[KEY_SHOW_MINI_NOW] = value }
}
}