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) }