54 lines
1.8 KiB
Kotlin
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 }
|
|
}
|
|
}
|