Merge "Fix color picker apply button" into main
diff --git a/src/com/android/wallpaper/customization/ui/binder/ThemePickerToolbarBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ThemePickerToolbarBinder.kt
index 9974b96..d997ec5 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ThemePickerToolbarBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ThemePickerToolbarBinder.kt
@@ -47,7 +47,6 @@
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filterNotNull
-import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
@Singleton
@@ -131,6 +130,24 @@
lifecycleOwner = lifecycleOwner,
)
+ ColorUpdateBinder.bind(
+ setColor = { color -> applyButton.setTextColor(color) },
+ color =
+ combine(
+ viewModel.isApplyButtonEnabled,
+ colorUpdateViewModel.colorOnPrimary,
+ colorUpdateViewModel.colorOnSurface,
+ ) { enabled, onPrimary, onSurface ->
+ if (enabled) {
+ onPrimary
+ } else {
+ ColorUtils.setAlphaComponent(onSurface, 97) // 97 for 38% transparent
+ }
+ },
+ shouldAnimate = { false },
+ lifecycleOwner = lifecycleOwner,
+ )
+
lifecycleOwner.lifecycleScope.launch {
lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
launch {
@@ -146,22 +163,6 @@
applyButton.isEnabled = it
applyButton.background.alpha =
if (it) 255 else 31 // 255 for 100%, 31 for 12% transparent
- ColorUpdateBinder.bind(
- setColor = { color -> applyButton.setTextColor(color) },
- color =
- if (it) {
- colorUpdateViewModel.colorOnPrimary
- } else {
- colorUpdateViewModel.colorOnSurface.map { color: Int ->
- ColorUtils.setAlphaComponent(
- color,
- 97,
- ) // 97 for 38% transparent
- }
- },
- shouldAnimate = { true },
- lifecycleOwner = lifecycleOwner,
- )
}
}
diff --git a/src/com/android/wallpaper/customization/ui/viewmodel/ThemePickerCustomizationOptionsViewModel.kt b/src/com/android/wallpaper/customization/ui/viewmodel/ThemePickerCustomizationOptionsViewModel.kt
index 29b8b6a..ba276ae 100644
--- a/src/com/android/wallpaper/customization/ui/viewmodel/ThemePickerCustomizationOptionsViewModel.kt
+++ b/src/com/android/wallpaper/customization/ui/viewmodel/ThemePickerCustomizationOptionsViewModel.kt
@@ -159,9 +159,13 @@
combine(colorPickerViewModel2.onApply, darkModeViewModel.onApply) {
colorOnApply,
darkModeOnApply ->
- {
- colorOnApply?.invoke()
- darkModeOnApply?.invoke()
+ if (colorOnApply == null && darkModeOnApply == null) {
+ null
+ } else {
+ {
+ colorOnApply?.invoke()
+ darkModeOnApply?.invoke()
+ }
}
}
else -> flow { emit(null) }