Merge "Fix clock carousel crash when touching the empty UI" into main
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
index 0ed0362..27bc42c 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
@@ -30,6 +30,7 @@
 import androidx.core.view.doOnPreDraw
 import androidx.core.view.get
 import androidx.core.view.isNotEmpty
+import androidx.core.view.isVisible
 import com.android.customization.picker.clock.shared.ClockSize
 import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselItemViewModel
 import com.android.systemui.plugins.clocks.ClockController
@@ -57,6 +58,7 @@
         val clockCarousel = LayoutInflater.from(context).inflate(R.layout.clock_carousel, this)
         carousel = clockCarousel.requireViewById(R.id.carousel)
         motionLayout = clockCarousel.requireViewById(R.id.motion_container)
+        motionLayout.isVisible = false
         motionLayout.contentDescription = context.getString(R.string.custom_clocks_label)
         clockViewScale =
             TypedValue().let {
@@ -133,6 +135,11 @@
         onClockSelected: (clock: ClockCarouselItemViewModel) -> Unit,
         isTwoPaneAndSmallWidth: Boolean,
     ) {
+        if (clocks.isEmpty()) {
+            // Hide the carousel if clock list is empty
+            motionLayout.isVisible = false
+            return
+        }
         if (isTwoPaneAndSmallWidth) {
             overrideScreenPreviewWidth()
         }
@@ -311,6 +318,7 @@
                 ) {}
             }
         )
+        motionLayout.isVisible = true
     }
 
     fun setSelectedClockIndex(index: Int) {