33 lines
1.2 KiB
Kotlin
33 lines
1.2 KiB
Kotlin
package de.waypointaudio.data
|
||
|
||
import android.content.Context
|
||
import androidx.datastore.preferences.core.edit
|
||
import androidx.datastore.preferences.core.longPreferencesKey
|
||
import androidx.datastore.preferences.preferencesDataStore
|
||
import kotlinx.coroutines.flow.Flow
|
||
import kotlinx.coroutines.flow.map
|
||
|
||
/**
|
||
* Speichert den letzten versionCode, für den der Versionshinweis-Dialog
|
||
* vom Nutzer ausgeblendet wurde. Steigt der versionCode, erscheint der
|
||
* Dialog automatisch erneut – auch wenn er zuvor deaktiviert wurde.
|
||
*/
|
||
private val Context.versionNoticeDataStore by preferencesDataStore(name = "version_notice_settings")
|
||
|
||
class VersionNoticeStore(private val context: Context) {
|
||
|
||
private companion object {
|
||
val KEY_DISMISSED_VERSION_CODE = longPreferencesKey("dismissed_version_code")
|
||
}
|
||
|
||
/** Letzter ausgeblendeter versionCode, oder 0 falls noch nie ausgeblendet. */
|
||
val dismissedVersionCode: Flow<Long> = context.versionNoticeDataStore.data
|
||
.map { it[KEY_DISMISSED_VERSION_CODE] ?: 0L }
|
||
|
||
suspend fun setDismissedVersionCode(code: Long) {
|
||
context.versionNoticeDataStore.edit { prefs ->
|
||
prefs[KEY_DISMISSED_VERSION_CODE] = code
|
||
}
|
||
}
|
||
}
|