Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 18 additions & 14 deletions Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
)
}
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -289,12 +293,12 @@ fun HomeCategoryTabIndicator(
@Composable
fun FollowedPodcasts(
items: List<PodcastWithExtraInfo>,
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)

Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
}
}
}
}
Expand Down Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand All @@ -101,10 +101,10 @@ fun Discover(
PodcastCategory(
categoryId = category.id,
modifier = Modifier.fillMaxSize()
.drawLayer(
translationX = transitionState[Offset],
.graphicsLayer {
translationX = transitionState[Offset]
alpha = transitionState[Alpha]
)
}
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
},
Expand All @@ -56,7 +56,7 @@ fun ToggleFollowPodcastIconButton(
}
),
modifier = Modifier
.drawShadow(
.shadow(
elevation = animate(if (isFollowed) 0.dp else 1.dp),
shape = MaterialTheme.shapes.small
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -59,7 +59,7 @@ fun <T> 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,21 +129,21 @@ 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)

for (page in minPage..maxPage) {
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()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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)
}

Expand All @@ -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)
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,21 @@ 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"

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"
Expand All @@ -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
Expand All @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion Jetcaster/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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