diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt index 40aa9bfa29..3d25762446 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt @@ -58,13 +58,13 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.AnimationClockAmbient +import androidx.compose.ui.platform.AmbientAnimationClock import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.viewModel -import androidx.ui.tooling.preview.Preview import com.example.jetcaster.R import com.example.jetcaster.data.PodcastWithExtraInfo import com.example.jetcaster.ui.home.discover.Discover @@ -111,9 +111,11 @@ fun HomeAppBar( TopAppBar( title = { Row { - Image(asset = vectorResource(R.drawable.ic_logo)) + Image( + imageVector = vectorResource(R.drawable.ic_logo) + ) Icon( - asset = vectorResource(R.drawable.ic_text_logo), + imageVector = vectorResource(R.drawable.ic_text_logo), modifier = Modifier.padding(start = 4.dp).preferredHeightIn(max = 24.dp) ) } @@ -122,13 +124,15 @@ fun HomeAppBar( actions = { Providers(AmbientContentAlpha provides ContentAlpha.medium) { IconButton( - onClick = { /* TODO: Open search */ }, - icon = { Icon(Icons.Filled.Search) } - ) + onClick = { /* TODO: Open search */ } + ) { + Icon(Icons.Filled.Search) + } IconButton( - onClick = { /* TODO: Open account? */ }, - icon = { Icon(Icons.Default.AccountCircle) } - ) + onClick = { /* TODO: Open account? */ } + ) { + Icon(Icons.Default.AccountCircle) + } } }, modifier = modifier @@ -163,7 +167,7 @@ fun HomeContent( } DynamicThemePrimaryColorsFromImage(dominantColorState) { - val clock = AnimationClockAmbient.current + val clock = AmbientAnimationClock.current val pagerState = remember(clock) { PagerState(clock) } val selectedImageUrl = featuredPodcasts.getOrNull(pagerState.currentPage) @@ -289,12 +293,12 @@ fun HomeCategoryTabIndicator( @Composable fun FollowedPodcasts( items: List, + modifier: Modifier = Modifier, pagerState: PagerState = run { - val clock = AnimationClockAmbient.current + val clock = AmbientAnimationClock.current remember(clock) { PagerState(clock) } }, onPodcastUnfollowed: (String) -> Unit, - modifier: Modifier = Modifier ) { pagerState.maxPage = (items.size - 1).coerceAtLeast(0) @@ -314,10 +318,10 @@ fun FollowedPodcasts( @Composable private fun FollowedPodcastCarouselItem( + modifier: Modifier = Modifier, podcastImageUrl: String? = null, lastEpisodeDate: OffsetDateTime? = null, onUnfollowedClick: () -> Unit, - modifier: Modifier = Modifier ) { Column( modifier.padding(horizontal = 12.dp, vertical = 8.dp) diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/category/PodcastCategory.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/category/PodcastCategory.kt index c30b226b7c..85ba395eb9 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/category/PodcastCategory.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/category/PodcastCategory.kt @@ -44,7 +44,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.PlaylistAdd import androidx.compose.material.icons.rounded.PlayCircleFilled -import androidx.compose.material.ripple.RippleIndication +import androidx.compose.material.ripple.rememberRippleIndication import androidx.compose.runtime.Composable import androidx.compose.runtime.Providers import androidx.compose.runtime.collectAsState @@ -56,9 +56,9 @@ import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.viewModel -import androidx.ui.tooling.preview.Preview import com.example.jetcaster.R import com.example.jetcaster.data.Episode import com.example.jetcaster.data.Podcast @@ -206,11 +206,11 @@ fun EpisodeListItem( } Image( - asset = Icons.Rounded.PlayCircleFilled, + imageVector = Icons.Rounded.PlayCircleFilled, contentScale = ContentScale.Fit, colorFilter = ColorFilter.tint(AmbientContentColor.current), modifier = Modifier - .clickable(indication = RippleIndication(bounded = false, radius = 24.dp)) { + .clickable(indication = rememberRippleIndication(bounded = false, radius = 24.dp)) { /* TODO */ } .preferredSize(36.dp) @@ -253,21 +253,23 @@ fun EpisodeListItem( IconButton( onClick = { /* TODO */ }, - icon = { Icon(Icons.Default.PlaylistAdd) }, modifier = Modifier.constrainAs(addPlaylist) { end.linkTo(overflow.start) centerVerticallyTo(playIcon) } - ) + ) { + Icon(Icons.Default.PlaylistAdd) + } IconButton( onClick = { /* TODO */ }, - icon = { Icon(Icons.Default.MoreVert) }, modifier = Modifier.constrainAs(overflow) { end.linkTo(parent.end, 8.dp) centerVerticallyTo(playIcon) } - ) + ) { + Icon(Icons.Default.MoreVert) + } } } } @@ -300,9 +302,9 @@ private fun CategoryPodcastRow( private fun TopPodcastRowItem( podcastTitle: String, isFollowed: Boolean, + modifier: Modifier = Modifier, onToggleFollowClicked: () -> Unit, podcastImageUrl: String? = null, - modifier: Modifier = Modifier ) { Column(modifier) { Box( diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/discover/Discover.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/discover/Discover.kt index 802996cc47..9ff89abf3d 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/discover/Discover.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/discover/Discover.kt @@ -43,8 +43,8 @@ import androidx.compose.runtime.onCommit import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.drawLayer -import androidx.compose.ui.platform.DensityAmbient +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.platform.AmbientDensity import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.viewModel import com.example.jetcaster.data.Category @@ -84,7 +84,7 @@ fun Discover( val reverseTransition = previousSelectedCategory?.let { p -> viewState.categories.indexOf(selectedCategory) < viewState.categories.indexOf(p) } ?: false - val transitionOffset = with(DensityAmbient.current) { 16.dp.toPx() } + val transitionOffset = with(AmbientDensity.current) { 16.dp.toPx() } ItemSwitcher( current = selectedCategory, @@ -101,10 +101,10 @@ fun Discover( PodcastCategory( categoryId = category.id, modifier = Modifier.fillMaxSize() - .drawLayer( - translationX = transitionState[Offset], + .graphicsLayer { + translationX = transitionState[Offset] alpha = transitionState[Alpha] - ) + } ) } diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/util/Buttons.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/util/Buttons.kt index 6f0685d496..7f87c7cea7 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/util/Buttons.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/util/Buttons.kt @@ -29,7 +29,7 @@ import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Check import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.drawShadow +import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp @@ -45,7 +45,7 @@ fun ToggleFollowPodcastIconButton( ) { Icon( // TODO: think about animating these icons - asset = when { + imageVector = when { isFollowed -> Icons.Default.Check else -> Icons.Default.Add }, @@ -56,7 +56,7 @@ fun ToggleFollowPodcastIconButton( } ), modifier = Modifier - .drawShadow( + .shadow( elevation = animate(if (isFollowed) 0.dp else 1.dp), shape = MaterialTheme.shapes.small ) diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/util/DynamicTheming.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/util/DynamicTheming.kt index 919940a6bf..956498798f 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/util/DynamicTheming.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/util/DynamicTheming.kt @@ -30,7 +30,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.ContextAmbient +import androidx.compose.ui.platform.AmbientContext import androidx.core.graphics.drawable.toBitmap import androidx.palette.graphics.Palette import coil.Coil @@ -42,7 +42,7 @@ import kotlinx.coroutines.withContext @Composable fun rememberDominantColorState( - context: Context = ContextAmbient.current, + context: Context = AmbientContext.current, defaultColor: Color = MaterialTheme.colors.primary, defaultOnColor: Color = MaterialTheme.colors.onPrimary, cacheSize: Int = 12, diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/util/GradientScrim.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/util/GradientScrim.kt index 3ad1b51255..24f9e80f16 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/util/GradientScrim.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/util/GradientScrim.kt @@ -17,14 +17,13 @@ package com.example.jetcaster.util import androidx.annotation.FloatRange -import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.composed -import androidx.compose.ui.drawBehind +import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.VerticalGradient import kotlin.math.pow @@ -40,7 +39,6 @@ import kotlin.math.pow * @param numStops The number of color stops to draw in the gradient. Higher numbers result in * the higher visual quality at the cost of draw performance. Defaults to `16`. */ -@Composable fun Modifier.verticalGradientScrim( color: Color, @FloatRange(from = 0.0, to = 1.0) startYPercentage: Float = 0f, diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/util/ItemSwitcher.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/util/ItemSwitcher.kt index 7342c6313b..9363247efe 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/util/ItemSwitcher.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/util/ItemSwitcher.kt @@ -27,7 +27,7 @@ import androidx.compose.runtime.key import androidx.compose.runtime.onCommit import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.AnimationClockAmbient +import androidx.compose.ui.platform.AmbientAnimationClock /** * [ItemSwitcher] allows to switch between two layouts with a transition defined by @@ -59,7 +59,7 @@ fun ItemSwitcher( keys.mapTo(state.items) { key -> ItemTransitionItem(key) { children -> - val clock = AnimationClockAmbient.current.asDisposableClock() + val clock = AmbientAnimationClock.current.asDisposableClock() val visible = key == current val anim = remember(clock, transitionDefinition) { diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/util/Pager.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/util/Pager.kt index 08a1fd72a8..072fe3981f 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/util/Pager.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/util/Pager.kt @@ -129,13 +129,13 @@ private val Measurable.page: Int @Composable fun Pager( state: PagerState, - offscreenLimit: Int = 2, modifier: Modifier = Modifier, + offscreenLimit: Int = 2, pageContent: @Composable PagerScope.() -> Unit ) { var pageSize by remember { mutableStateOf(0) } Layout( - children = { + content = { val minPage = (state.currentPage - offscreenLimit).coerceAtLeast(state.minPage) val maxPage = (state.currentPage + offscreenLimit).coerceAtMost(state.maxPage) @@ -143,7 +143,7 @@ fun Pager( val pageData = PageData(page) val scope = PagerScope(state, page) key(pageData) { - Box(alignment = Alignment.Center, modifier = pageData) { + Box(contentAlignment = Alignment.Center, modifier = pageData) { scope.pageContent() } } diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/util/PluralResources.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/util/PluralResources.kt index 8abb08a628..91867a98b8 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/util/PluralResources.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/util/PluralResources.kt @@ -18,7 +18,7 @@ package com.example.jetcaster.util import androidx.annotation.PluralsRes import androidx.compose.runtime.Composable -import androidx.compose.ui.platform.ContextAmbient +import androidx.compose.ui.platform.AmbientContext /** * Load a quantity string resource. @@ -29,7 +29,7 @@ import androidx.compose.ui.platform.ContextAmbient */ @Composable fun quantityStringResource(@PluralsRes id: Int, quantity: Int): String { - val context = ContextAmbient.current + val context = AmbientContext.current return context.resources.getQuantityString(id, quantity) } @@ -43,6 +43,6 @@ fun quantityStringResource(@PluralsRes id: Int, quantity: Int): String { */ @Composable fun quantityStringResource(@PluralsRes id: Int, quantity: Int, vararg formatArgs: Any): String { - val context = ContextAmbient.current + val context = AmbientContext.current return context.resources.getQuantityString(id, quantity, *formatArgs) } diff --git a/Jetcaster/buildSrc/src/main/java/com/example/jetcaster/buildsrc/dependencies.kt b/Jetcaster/buildSrc/src/main/java/com/example/jetcaster/buildsrc/dependencies.kt index 0035fcea0f..44d5673c89 100644 --- a/Jetcaster/buildSrc/src/main/java/com/example/jetcaster/buildsrc/dependencies.kt +++ b/Jetcaster/buildSrc/src/main/java/com/example/jetcaster/buildsrc/dependencies.kt @@ -21,7 +21,7 @@ object Versions { } object Libs { - const val androidGradlePlugin = "com.android.tools.build:gradle:4.2.0-alpha15" + const val androidGradlePlugin = "com.android.tools.build:gradle:4.2.0-alpha16" const val jdkDesugar = "com.android.tools:desugar_jdk_libs:1.0.9" const val junit = "junit:junit:4.13" @@ -29,13 +29,13 @@ object Libs { const val material = "com.google.android.material:material:1.1.0" object Accompanist { - private const val version = "0.3.3.1" + private const val version = "0.3.4.compose-7001724-SNAPSHOT" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" const val insets = "dev.chrisbanes.accompanist:accompanist-insets:$version" } object Kotlin { - private const val version = "1.4.10" + private const val version = "1.4.20" const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$version" const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$version" const val extensions = "org.jetbrains.kotlin:kotlin-android-extensions:$version" @@ -62,8 +62,8 @@ object Libs { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha04" object Compose { - private const val snapshot = "" - const val version = "1.0.0-alpha07" + private const val snapshot = "7001724" + const val version = "1.0.0-SNAPSHOT" @get:JvmStatic val snapshotUrl: String @@ -77,7 +77,7 @@ object Libs { const val material = "androidx.compose.material:material:${version}" const val materialIconsExtended = "androidx.compose.material:material-icons-extended:${version}" - const val tooling = "androidx.ui:ui-tooling:${version}" + const val tooling = "androidx.compose.ui:ui-tooling:${version}" } object Test { diff --git a/Jetcaster/gradle/wrapper/gradle-wrapper.properties b/Jetcaster/gradle/wrapper/gradle-wrapper.properties index e8894b0281..19869d6658 100644 --- a/Jetcaster/gradle/wrapper/gradle-wrapper.properties +++ b/Jetcaster/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip