change (media preview config) : manage migration of local data

This commit is contained in:
ganfra
2025-06-26 21:44:03 +02:00
parent 42af43ea7a
commit 7fb0b36a9e
5 changed files with 99 additions and 11 deletions

View File

@@ -22,9 +22,10 @@ interface AppPreferencesStore {
suspend fun setTheme(theme: String)
fun getThemeFlow(): Flow<String?>
fun getHideInviteAvatarsFlow(): Flow<Boolean>
fun getTimelineMediaPreviewValueFlow(): Flow<MediaPreviewValue>
suspend fun setHideInviteAvatars(hide: Boolean?)
fun getHideInviteAvatarsFlow(): Flow<Boolean?>
suspend fun setTimelineMediaPreviewValue(mediaPreviewValue: MediaPreviewValue?)
fun getTimelineMediaPreviewValueFlow(): Flow<MediaPreviewValue?>
suspend fun setTracingLogLevel(logLevel: LogLevel)
fun getTracingLogLevelFlow(): Flow<LogLevel>

View File

@@ -85,15 +85,35 @@ class DefaultAppPreferencesStore @Inject constructor(
}
}
override fun getHideInviteAvatarsFlow(): Flow<Boolean> {
override fun getHideInviteAvatarsFlow(): Flow<Boolean?> {
return store.data.map { prefs ->
prefs[hideInviteAvatarsKey] == true
prefs[hideInviteAvatarsKey]
}
}
override fun getTimelineMediaPreviewValueFlow(): Flow<MediaPreviewValue> {
override suspend fun setHideInviteAvatars(hide: Boolean?) {
store.edit { prefs ->
if (hide != null) {
prefs[hideInviteAvatarsKey] = hide
} else {
prefs.remove(hideInviteAvatarsKey)
}
}
}
override suspend fun setTimelineMediaPreviewValue(mediaPreviewValue: MediaPreviewValue?) {
store.edit { prefs ->
if (mediaPreviewValue != null) {
prefs[timelineMediaPreviewValueKey] = mediaPreviewValue.name
} else {
prefs.remove(timelineMediaPreviewValueKey)
}
}
}
override fun getTimelineMediaPreviewValueFlow(): Flow<MediaPreviewValue?> {
return store.data.map { prefs ->
prefs[timelineMediaPreviewValueKey]?.let { MediaPreviewValue.valueOf(it) } ?: MediaPreviewValue.On
prefs[timelineMediaPreviewValueKey]?.let { MediaPreviewValue.valueOf(it) }
}
}

View File

@@ -17,8 +17,8 @@ import kotlinx.coroutines.flow.MutableStateFlow
class InMemoryAppPreferencesStore(
isDeveloperModeEnabled: Boolean = false,
customElementCallBaseUrl: String? = null,
hideInviteAvatars: Boolean = false,
timelineMediaPreviewValue: MediaPreviewValue = MediaPreviewValue.On,
hideInviteAvatars: Boolean? = null,
timelineMediaPreviewValue: MediaPreviewValue? = null,
theme: String? = null,
logLevel: LogLevel = LogLevel.INFO,
traceLockPacks: Set<TraceLogPack> = emptySet(),
@@ -55,14 +55,22 @@ class InMemoryAppPreferencesStore(
return theme
}
override fun getHideInviteAvatarsFlow(): Flow<Boolean> {
override fun getHideInviteAvatarsFlow(): Flow<Boolean?> {
return hideInviteAvatars
}
override fun getTimelineMediaPreviewValueFlow(): Flow<MediaPreviewValue> {
override fun getTimelineMediaPreviewValueFlow(): Flow<MediaPreviewValue?> {
return timelineMediaPreviewValue
}
override suspend fun setHideInviteAvatars(hide: Boolean?) {
hideInviteAvatars.value = hide
}
override suspend fun setTimelineMediaPreviewValue(mediaPreviewValue: MediaPreviewValue?) {
timelineMediaPreviewValue.value = mediaPreviewValue
}
override suspend fun setTracingLogLevel(logLevel: LogLevel) {
this.logLevel.value = logLevel
}