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 = 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 } } }