From 3cec1e97657ff5fb3ebd452fbfc8389b59dc1fb1 Mon Sep 17 00:00:00 2001 From: Yuri Schimke Date: Tue, 11 Feb 2025 10:33:52 +0000 Subject: [PATCH 1/2] Remove `ExperimentalWearMaterialApi` opt-in and suppress in code - Remove `-opt-in=androidx.wear.compose.material.ExperimentalWearMaterialApi` flags from build files. - Add `OptIn(ExperimentalWearMaterialApi::class)` to the necessary files. - Add `@Suppress("DEPRECATION")` to `HorologistTheme` for statusBarColor. - Change `ContextCompat.startActivity` to `startActivity`. - Change `Uri.parse` to `String.toUri()`. - Remove `ExperimentalFoundationApi` opt-in. --- auth/composables/build.gradle.kts | 2 -- .../auth/sample/ui/theme/HorologistTheme.kt | 1 + composables/build.gradle.kts | 2 -- .../horologist/composables/PlaceholderChipPreview.kt | 3 +++ .../horologist/composables/SectionedListPreview.kt | 3 +++ compose-material/build.gradle.kts | 2 -- .../datalayer/phone/ui/play/PlayLauncher.kt | 11 +++++------ .../android/horologist/audio/ui/VolumeViewModel.kt | 6 +++--- media/ui-model/build.gradle.kts | 1 - media/ui/build.gradle.kts | 1 - .../media/ui/screens/browse/BrowseScreenPreview.kt | 3 +++ .../media/ui/screens/entity/EntityScreenPreview.kt | 3 +++ .../media/ui/components/MediaInfoDisplay.kt | 3 +++ .../components/animated/AnimatedMediaInfoDisplay.kt | 3 +++ .../ui/screens/browse/PlaylistDownloadBrowseScreen.kt | 3 +++ .../media/ui/screens/entity/PlaylistDownloadScreen.kt | 3 +++ .../ui/screens/entity/PlaylistStreamingScreen.kt | 3 +++ .../media/ui/screens/playlists/PlaylistsScreen.kt | 3 +++ 18 files changed, 39 insertions(+), 17 deletions(-) diff --git a/auth/composables/build.gradle.kts b/auth/composables/build.gradle.kts index cf85c40f98..e93c1cd558 100644 --- a/auth/composables/build.gradle.kts +++ b/auth/composables/build.gradle.kts @@ -46,8 +46,6 @@ android { jvmTarget = JavaVersion.VERSION_17.majorVersion freeCompilerArgs += listOf( "-opt-in=com.google.android.horologist.annotations.ExperimentalHorologistApi", - "-opt-in=androidx.compose.foundation.ExperimentalFoundationApi", - "-opt-in=androidx.wear.compose.material.ExperimentalWearMaterialApi", ) } diff --git a/auth/sample/phone/src/main/java/com/google/android/horologist/auth/sample/ui/theme/HorologistTheme.kt b/auth/sample/phone/src/main/java/com/google/android/horologist/auth/sample/ui/theme/HorologistTheme.kt index 36043b0858..d660fd2298 100644 --- a/auth/sample/phone/src/main/java/com/google/android/horologist/auth/sample/ui/theme/HorologistTheme.kt +++ b/auth/sample/phone/src/main/java/com/google/android/horologist/auth/sample/ui/theme/HorologistTheme.kt @@ -73,6 +73,7 @@ fun HorologistTheme( if (!view.isInEditMode) { SideEffect { val window = (view.context as Activity).window + @Suppress("DEPRECATION") window.statusBarColor = colorScheme.primary.toArgb() WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme } diff --git a/composables/build.gradle.kts b/composables/build.gradle.kts index 08d08c9c79..5c2cdd2bcb 100644 --- a/composables/build.gradle.kts +++ b/composables/build.gradle.kts @@ -45,8 +45,6 @@ android { jvmTarget = JavaVersion.VERSION_17.majorVersion freeCompilerArgs += listOf( "-opt-in=com.google.android.horologist.annotations.ExperimentalHorologistApi", - "-opt-in=androidx.compose.foundation.ExperimentalFoundationApi", - "-opt-in=androidx.wear.compose.material.ExperimentalWearMaterialApi", ) } diff --git a/composables/src/debug/java/com/google/android/horologist/composables/PlaceholderChipPreview.kt b/composables/src/debug/java/com/google/android/horologist/composables/PlaceholderChipPreview.kt index cf49c38ce5..860881185d 100644 --- a/composables/src/debug/java/com/google/android/horologist/composables/PlaceholderChipPreview.kt +++ b/composables/src/debug/java/com/google/android/horologist/composables/PlaceholderChipPreview.kt @@ -14,10 +14,13 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.composables import androidx.compose.runtime.Composable import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ExperimentalWearMaterialApi import com.google.android.horologist.compose.tools.WearPreview @WearPreview diff --git a/composables/src/debug/java/com/google/android/horologist/composables/SectionedListPreview.kt b/composables/src/debug/java/com/google/android/horologist/composables/SectionedListPreview.kt index 80861df719..343f4439a0 100644 --- a/composables/src/debug/java/com/google/android/horologist/composables/SectionedListPreview.kt +++ b/composables/src/debug/java/com/google/android/horologist/composables/SectionedListPreview.kt @@ -14,6 +14,8 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.composables import androidx.compose.foundation.layout.padding @@ -29,6 +31,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ExperimentalWearMaterialApi import androidx.wear.compose.material.Icon import androidx.wear.compose.material.MaterialTheme import androidx.wear.compose.material.Text diff --git a/compose-material/build.gradle.kts b/compose-material/build.gradle.kts index 72a48e4aa1..f98fa6d926 100644 --- a/compose-material/build.gradle.kts +++ b/compose-material/build.gradle.kts @@ -52,8 +52,6 @@ android { jvmTarget = JavaVersion.VERSION_17.majorVersion freeCompilerArgs += listOf( "-opt-in=com.google.android.horologist.annotations.ExperimentalHorologistApi", - "-opt-in=androidx.compose.foundation.ExperimentalFoundationApi", - "-opt-in=androidx.wear.compose.material.ExperimentalWearMaterialApi", ) } diff --git a/datalayer/phone-ui/src/main/java/com/google/android/horologist/datalayer/phone/ui/play/PlayLauncher.kt b/datalayer/phone-ui/src/main/java/com/google/android/horologist/datalayer/phone/ui/play/PlayLauncher.kt index a53e7279d4..04eb895b5d 100644 --- a/datalayer/phone-ui/src/main/java/com/google/android/horologist/datalayer/phone/ui/play/PlayLauncher.kt +++ b/datalayer/phone-ui/src/main/java/com/google/android/horologist/datalayer/phone/ui/play/PlayLauncher.kt @@ -22,6 +22,7 @@ import android.content.Intent import android.net.Uri import android.os.Bundle import androidx.core.content.ContextCompat +import androidx.core.net.toUri private const val PLAY_STORE_APP_URI_PREFIX = "market://details?id=" private const val PLAY_STORE_WEB_URL_PREFIX = "https://play.google.com/store/apps/details?id=" @@ -31,21 +32,19 @@ private const val PLAY_STORE_WEB_URL_PREFIX = "https://play.google.com/store/app */ public fun Context.launchPlay(packageName: String) { try { - ContextCompat.startActivity( - this, + startActivity( Intent( Intent.ACTION_VIEW, - Uri.parse(PLAY_STORE_APP_URI_PREFIX + packageName), + (PLAY_STORE_APP_URI_PREFIX + packageName).toUri(), ), Bundle(), ) } catch (anfe: ActivityNotFoundException) { // Handle scenario where Google Play app is not installed - ContextCompat.startActivity( - this, + startActivity( Intent( Intent.ACTION_VIEW, - Uri.parse(PLAY_STORE_WEB_URL_PREFIX + packageName), + (PLAY_STORE_WEB_URL_PREFIX + packageName).toUri(), ), Bundle(), ) diff --git a/media/audio-ui-model/src/main/java/com/google/android/horologist/audio/ui/VolumeViewModel.kt b/media/audio-ui-model/src/main/java/com/google/android/horologist/audio/ui/VolumeViewModel.kt index 829b3e5141..40779a0ac9 100644 --- a/media/audio-ui-model/src/main/java/com/google/android/horologist/audio/ui/VolumeViewModel.kt +++ b/media/audio-ui-model/src/main/java/com/google/android/horologist/audio/ui/VolumeViewModel.kt @@ -86,12 +86,12 @@ public open class VolumeViewModel( } public fun increaseVolume() { - this.userActionEvents.tryEmit(Unit) + val unused = userActionEvents.tryEmit(Unit) volumeRepository.increaseVolume() } public fun decreaseVolume() { - this.userActionEvents.tryEmit(Unit) + val unused = userActionEvents.tryEmit(Unit) volumeRepository.decreaseVolume() } @@ -127,7 +127,7 @@ public open class VolumeViewModel( } public fun setVolume(volume: Int) { - this.userActionEvents.tryEmit(Unit) + val unused = userActionEvents.tryEmit(Unit) if (volume != volumeRepository.volumeState.value.current) { volumeRepository.setVolume(volume) } diff --git a/media/ui-model/build.gradle.kts b/media/ui-model/build.gradle.kts index 7008b36b0c..5d99b2629d 100644 --- a/media/ui-model/build.gradle.kts +++ b/media/ui-model/build.gradle.kts @@ -50,7 +50,6 @@ android { com.google.android.horologist.annotations.ExperimentalHorologistApi kotlin.RequiresOptIn kotlinx.coroutines.ExperimentalCoroutinesApi - androidx.wear.compose.material.ExperimentalWearMaterialApi """.trim().split("\\s+".toRegex()).map { "-opt-in=$it" } diff --git a/media/ui/build.gradle.kts b/media/ui/build.gradle.kts index 4b203418bd..3066ff14a5 100644 --- a/media/ui/build.gradle.kts +++ b/media/ui/build.gradle.kts @@ -50,7 +50,6 @@ android { com.google.android.horologist.annotations.ExperimentalHorologistApi kotlin.RequiresOptIn kotlinx.coroutines.ExperimentalCoroutinesApi - androidx.wear.compose.material.ExperimentalWearMaterialApi """.trim().split("\\s+".toRegex()).map { "-opt-in=$it" } diff --git a/media/ui/src/debug/java/com/google/android/horologist/media/ui/screens/browse/BrowseScreenPreview.kt b/media/ui/src/debug/java/com/google/android/horologist/media/ui/screens/browse/BrowseScreenPreview.kt index f9b6b66b03..bfd003d725 100644 --- a/media/ui/src/debug/java/com/google/android/horologist/media/ui/screens/browse/BrowseScreenPreview.kt +++ b/media/ui/src/debug/java/com/google/android/horologist/media/ui/screens/browse/BrowseScreenPreview.kt @@ -14,6 +14,8 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.media.ui.screens.browse import androidx.compose.material.icons.Icons @@ -25,6 +27,7 @@ import androidx.compose.material.icons.filled.Podcasts import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ExperimentalWearMaterialApi import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices import com.google.android.horologist.composables.PlaceholderChip import com.google.android.horologist.composables.Section diff --git a/media/ui/src/debug/java/com/google/android/horologist/media/ui/screens/entity/EntityScreenPreview.kt b/media/ui/src/debug/java/com/google/android/horologist/media/ui/screens/entity/EntityScreenPreview.kt index aaaf5af0e9..76035fe5ae 100644 --- a/media/ui/src/debug/java/com/google/android/horologist/media/ui/screens/entity/EntityScreenPreview.kt +++ b/media/ui/src/debug/java/com/google/android/horologist/media/ui/screens/entity/EntityScreenPreview.kt @@ -14,6 +14,8 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.media.ui.screens.entity import androidx.compose.foundation.background @@ -41,6 +43,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ExperimentalWearMaterialApi import androidx.wear.compose.material.Icon import androidx.wear.compose.material.Text import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices diff --git a/media/ui/src/main/java/com/google/android/horologist/media/ui/components/MediaInfoDisplay.kt b/media/ui/src/main/java/com/google/android/horologist/media/ui/components/MediaInfoDisplay.kt index b50762be11..7a83424a34 100644 --- a/media/ui/src/main/java/com/google/android/horologist/media/ui/components/MediaInfoDisplay.kt +++ b/media/ui/src/main/java/com/google/android/horologist/media/ui/components/MediaInfoDisplay.kt @@ -14,10 +14,13 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.media.ui.components import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.wear.compose.material.ExperimentalWearMaterialApi import com.google.android.horologist.annotations.ExperimentalHorologistApi import com.google.android.horologist.media.ui.components.display.LoadingMediaDisplay import com.google.android.horologist.media.ui.components.display.NothingPlayingDisplay diff --git a/media/ui/src/main/java/com/google/android/horologist/media/ui/components/animated/AnimatedMediaInfoDisplay.kt b/media/ui/src/main/java/com/google/android/horologist/media/ui/components/animated/AnimatedMediaInfoDisplay.kt index 9cc692e941..9a7e0022aa 100644 --- a/media/ui/src/main/java/com/google/android/horologist/media/ui/components/animated/AnimatedMediaInfoDisplay.kt +++ b/media/ui/src/main/java/com/google/android/horologist/media/ui/components/animated/AnimatedMediaInfoDisplay.kt @@ -14,10 +14,13 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.media.ui.components.animated import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.wear.compose.material.ExperimentalWearMaterialApi import com.google.android.horologist.annotations.ExperimentalHorologistApi import com.google.android.horologist.media.ui.components.display.LoadingMediaDisplay import com.google.android.horologist.media.ui.components.display.NothingPlayingDisplay diff --git a/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/browse/PlaylistDownloadBrowseScreen.kt b/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/browse/PlaylistDownloadBrowseScreen.kt index d7ebe43843..eb075154ca 100644 --- a/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/browse/PlaylistDownloadBrowseScreen.kt +++ b/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/browse/PlaylistDownloadBrowseScreen.kt @@ -14,6 +14,8 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.media.ui.screens.browse import androidx.compose.material.icons.Icons @@ -27,6 +29,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.onClick import androidx.compose.ui.semantics.semantics import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ExperimentalWearMaterialApi import com.google.android.horologist.annotations.ExperimentalHorologistApi import com.google.android.horologist.composables.PlaceholderChip import com.google.android.horologist.composables.Section diff --git a/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/entity/PlaylistDownloadScreen.kt b/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/entity/PlaylistDownloadScreen.kt index e456951210..983eb5c83d 100644 --- a/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/entity/PlaylistDownloadScreen.kt +++ b/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/entity/PlaylistDownloadScreen.kt @@ -14,6 +14,8 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.media.ui.screens.entity import android.text.format.Formatter @@ -49,6 +51,7 @@ import androidx.compose.ui.unit.dp import androidx.wear.compose.material.ButtonDefaults import androidx.wear.compose.material.ChipDefaults import androidx.wear.compose.material.CircularProgressIndicator +import androidx.wear.compose.material.ExperimentalWearMaterialApi import androidx.wear.compose.material.Icon import androidx.wear.compose.material.MaterialTheme import androidx.wear.compose.material.ProgressIndicatorDefaults diff --git a/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/entity/PlaylistStreamingScreen.kt b/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/entity/PlaylistStreamingScreen.kt index d771293c8f..30872fc09f 100644 --- a/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/entity/PlaylistStreamingScreen.kt +++ b/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/entity/PlaylistStreamingScreen.kt @@ -14,6 +14,8 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.media.ui.screens.entity import androidx.compose.foundation.layout.Row @@ -28,6 +30,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ExperimentalWearMaterialApi import com.google.android.horologist.annotations.ExperimentalHorologistApi import com.google.android.horologist.composables.PlaceholderChip import com.google.android.horologist.compose.layout.rememberActivePlaceholderState diff --git a/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/playlists/PlaylistsScreen.kt b/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/playlists/PlaylistsScreen.kt index 167eaacf5a..e92de9ed28 100644 --- a/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/playlists/PlaylistsScreen.kt +++ b/media/ui/src/main/java/com/google/android/horologist/media/ui/screens/playlists/PlaylistsScreen.kt @@ -14,6 +14,8 @@ * limitations under the License. */ +@file:OptIn(ExperimentalWearMaterialApi::class) + package com.google.android.horologist.media.ui.screens.playlists import androidx.compose.foundation.layout.Column @@ -23,6 +25,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.unit.dp import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ExperimentalWearMaterialApi import com.google.android.horologist.annotations.ExperimentalHorologistApi import com.google.android.horologist.composables.PlaceholderChip import com.google.android.horologist.composables.Section From a6e83937c7cd264de27ab7ac5a40901e332739d1 Mon Sep 17 00:00:00 2001 From: Yuri Schimke Date: Tue, 11 Feb 2025 11:19:47 +0000 Subject: [PATCH 2/2] Fixes --- .../android/horologist/composables/PlaceholderChipTest.kt | 4 ++-- .../android/horologist/composables/SectionedListTest.kt | 2 ++ .../horologist/datalayer/phone/ui/play/PlayLauncher.kt | 2 -- .../horologist/media/ui/components/LoadingMediaDisplayTest.kt | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/composables/src/test/kotlin/com/google/android/horologist/composables/PlaceholderChipTest.kt b/composables/src/test/kotlin/com/google/android/horologist/composables/PlaceholderChipTest.kt index 0b5ad96c42..f47d98264b 100644 --- a/composables/src/test/kotlin/com/google/android/horologist/composables/PlaceholderChipTest.kt +++ b/composables/src/test/kotlin/com/google/android/horologist/composables/PlaceholderChipTest.kt @@ -14,16 +14,16 @@ * limitations under the License. */ -@file:OptIn(ExperimentalWearFoundationApi::class) +@file:OptIn(ExperimentalWearMaterialApi::class) package com.google.android.horologist.composables import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider -import androidx.wear.compose.foundation.ExperimentalWearFoundationApi import androidx.wear.compose.foundation.LocalReduceMotion import androidx.wear.compose.foundation.ReduceMotion import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ExperimentalWearMaterialApi import com.google.android.horologist.screenshots.rng.WearLegacyComponentTest import org.junit.Test diff --git a/composables/src/test/kotlin/com/google/android/horologist/composables/SectionedListTest.kt b/composables/src/test/kotlin/com/google/android/horologist/composables/SectionedListTest.kt index ffc10f6dea..c8333fc187 100644 --- a/composables/src/test/kotlin/com/google/android/horologist/composables/SectionedListTest.kt +++ b/composables/src/test/kotlin/com/google/android/horologist/composables/SectionedListTest.kt @@ -17,6 +17,7 @@ @file:Suppress( "TestFunctionName", // incorrectly flagging composable functions ) +@file:OptIn(ExperimentalWearMaterialApi::class) package com.google.android.horologist.composables @@ -33,6 +34,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ExperimentalWearMaterialApi import androidx.wear.compose.material.Icon import androidx.wear.compose.material.MaterialTheme import androidx.wear.compose.material.Text diff --git a/datalayer/phone-ui/src/main/java/com/google/android/horologist/datalayer/phone/ui/play/PlayLauncher.kt b/datalayer/phone-ui/src/main/java/com/google/android/horologist/datalayer/phone/ui/play/PlayLauncher.kt index 04eb895b5d..986b57894c 100644 --- a/datalayer/phone-ui/src/main/java/com/google/android/horologist/datalayer/phone/ui/play/PlayLauncher.kt +++ b/datalayer/phone-ui/src/main/java/com/google/android/horologist/datalayer/phone/ui/play/PlayLauncher.kt @@ -19,9 +19,7 @@ package com.google.android.horologist.datalayer.phone.ui.play import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent -import android.net.Uri import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.core.net.toUri private const val PLAY_STORE_APP_URI_PREFIX = "market://details?id=" diff --git a/media/ui/src/test/java/com/google/android/horologist/media/ui/components/LoadingMediaDisplayTest.kt b/media/ui/src/test/java/com/google/android/horologist/media/ui/components/LoadingMediaDisplayTest.kt index 42f1366c55..49dbaa5a9c 100644 --- a/media/ui/src/test/java/com/google/android/horologist/media/ui/components/LoadingMediaDisplayTest.kt +++ b/media/ui/src/test/java/com/google/android/horologist/media/ui/components/LoadingMediaDisplayTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -@file:OptIn(ExperimentalWearFoundationApi::class) +@file:OptIn(ExperimentalWearFoundationApi::class, ExperimentalWearMaterialApi::class) package com.google.android.horologist.media.ui.components @@ -30,6 +30,7 @@ import androidx.compose.ui.graphics.Color import androidx.wear.compose.foundation.ExperimentalWearFoundationApi import androidx.wear.compose.foundation.LocalReduceMotion import androidx.wear.compose.foundation.ReduceMotion +import androidx.wear.compose.material.ExperimentalWearMaterialApi import com.google.android.horologist.media.ui.components.animated.MarqueeTextMediaDisplay import com.google.android.horologist.media.ui.components.display.LoadingMediaDisplay import com.google.android.horologist.media.ui.components.display.TextMediaDisplay