Merge "Fix discard changes when flex clock customization" into main
diff --git a/src/com/android/wallpaper/customization/ui/viewmodel/ClockPickerViewModel.kt b/src/com/android/wallpaper/customization/ui/viewmodel/ClockPickerViewModel.kt
index a5f5d22..f3325a6 100644
--- a/src/com/android/wallpaper/customization/ui/viewmodel/ClockPickerViewModel.kt
+++ b/src/com/android/wallpaper/customization/ui/viewmodel/ClockPickerViewModel.kt
@@ -166,7 +166,7 @@
} else {
fun() {
overridingClock.value = this
- overrideClockFontAxisMap.value = null
+ overrideClockFontAxisMap.value = emptyMap()
}
}
},
@@ -174,8 +174,7 @@
}
// Clock Font Axis Editor
- private val overrideClockFontAxisMap = MutableStateFlow<Map<String, Float>?>(null)
- private val isFontAxisMapEdited = overrideClockFontAxisMap.map { it != null }
+ private val overrideClockFontAxisMap = MutableStateFlow<Map<String, Float>>(emptyMap())
val selectedClockFontAxes =
previewingClock
.map { clock -> clock.fontAxes }
@@ -184,21 +183,31 @@
selectedClockFontAxes
.filterNotNull()
.map { fontAxes -> fontAxes.associate { it.key to it.currentValue } }
- .stateIn(viewModelScope, SharingStarted.Eagerly, null)
+ .shareIn(viewModelScope, SharingStarted.WhileSubscribed(), 1)
+ private val isFontAxisMapEdited =
+ combine(overrideClockFontAxisMap, selectedClockFontAxisMap) {
+ overrideClockFontAxisMap,
+ selectedClockFontAxisMap ->
+ !overrideClockFontAxisMap.all { (key, value) -> selectedClockFontAxisMap[key] == value }
+ }
val previewingClockFontAxisMap =
combine(overrideClockFontAxisMap, selectedClockFontAxisMap.filterNotNull()) {
overrideAxisMap,
selectedAxisMap ->
- overrideAxisMap?.let {
- val mutableMap = selectedAxisMap.toMutableMap()
- overrideAxisMap.forEach { (key, value) -> mutableMap[key] = value }
- mutableMap.toMap()
- } ?: selectedAxisMap
+ if (overrideAxisMap.isEmpty()) {
+ selectedAxisMap
+ } else {
+ overrideAxisMap.let {
+ val mutableMap = selectedAxisMap.toMutableMap()
+ overrideAxisMap.forEach { (key, value) -> mutableMap[key] = value }
+ mutableMap.toMap()
+ }
+ }
}
.stateIn(viewModelScope, SharingStarted.Eagerly, emptyMap())
fun updatePreviewFontAxis(key: String, value: Float) {
- val axisMap = (overrideClockFontAxisMap.value?.toMutableMap() ?: mutableMapOf())
+ val axisMap = overrideClockFontAxisMap.value.toMutableMap()
axisMap[key] = value
overrideClockFontAxisMap.value = axisMap.toMap()
}
@@ -208,7 +217,7 @@
}
fun cancelFontAxes() {
- overrideClockFontAxisMap.value = null
+ overrideClockFontAxisMap.value = emptyMap()
_selectedTab.value = Tab.STYLE
}
@@ -454,7 +463,7 @@
overridingClockSize.value = null
overridingClockColorId.value = null
overridingSliderProgress.value = null
- overrideClockFontAxisMap.value = null
+ overrideClockFontAxisMap.value = emptyMap()
_selectedTab.value = Tab.STYLE
}