Skip to content

Commit fd4c28d

Browse files
committedFeb 10, 2021
[Jetsnack] Update to snapshot 7123292.
Change-Id: Ie06414658a8ba80aa6427977cdaecf29c815f93a
1 parent a83f238 commit fd4c28d

File tree

19 files changed

+79
-50
lines changed

19 files changed

+79
-50
lines changed
 

‎Jetsnack/app/build.gradle

+2
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ dependencies {
8282
implementation Libs.Coroutines.core
8383

8484
implementation Libs.AndroidX.coreKtx
85+
implementation Libs.AndroidX.Activity.activityCompose
86+
implementation Libs.AndroidX.Lifecycle.viewModelCompose
8587

8688
implementation Libs.AndroidX.Compose.runtime
8789
implementation Libs.AndroidX.Compose.foundation

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/JetsnackApp.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.activity.OnBackPressedDispatcher
2020
import androidx.compose.animation.Crossfade
2121
import androidx.compose.runtime.Composable
2222
import androidx.compose.runtime.remember
23+
import androidx.compose.runtime.saveable.rememberSaveable
2324
import androidx.compose.runtime.savedinstancestate.rememberSavedInstanceState
2425
import com.example.jetsnack.ui.home.Home
2526
import com.example.jetsnack.ui.snackdetail.SnackDetail
@@ -29,8 +30,8 @@ import dev.chrisbanes.accompanist.insets.ProvideWindowInsets
2930

3031
@Composable
3132
fun JetsnackApp(backDispatcher: OnBackPressedDispatcher) {
32-
val navigator: Navigator<Destination> = rememberSavedInstanceState(
33-
saver = Navigator.saver<Destination>(backDispatcher)
33+
val navigator: Navigator<Destination> = rememberSaveable(
34+
saver = Navigator.saver(backDispatcher)
3435
) {
3536
Navigator(Destination.Home, backDispatcher)
3637
}

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/MainActivity.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ package com.example.jetsnack.ui
1818

1919
import android.os.Bundle
2020
import androidx.activity.ComponentActivity
21+
import androidx.activity.compose.setContent
2122
import androidx.compose.runtime.Providers
2223
import androidx.compose.runtime.remember
23-
import androidx.compose.ui.platform.setContent
2424
import androidx.core.view.WindowCompat
25-
import com.example.jetsnack.ui.utils.SysUiController
25+
import com.example.jetsnack.ui.utils.LocalSysUiController
2626
import com.example.jetsnack.ui.utils.SystemUiController
2727

2828
class MainActivity : ComponentActivity() {
@@ -34,7 +34,7 @@ class MainActivity : ComponentActivity() {
3434

3535
setContent {
3636
val systemUiController = remember { SystemUiController(window) }
37-
Providers(SysUiController provides systemUiController) {
37+
Providers(LocalSysUiController provides systemUiController) {
3838
JetsnackApp(onBackPressedDispatcher)
3939
}
4040
}

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Button.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package com.example.jetsnack.ui.components
1919
import androidx.compose.foundation.AmbientIndication
2020
import androidx.compose.foundation.BorderStroke
2121
import androidx.compose.foundation.InteractionState
22+
import androidx.compose.foundation.LocalIndication
2223
import androidx.compose.foundation.background
2324
import androidx.compose.foundation.clickable
2425
import androidx.compose.foundation.indication
@@ -87,7 +88,7 @@ fun JetsnackButton(
8788
minWidth = ButtonDefaults.MinWidth,
8889
minHeight = ButtonDefaults.MinHeight
8990
)
90-
.indication(interactionState, AmbientIndication.current())
91+
.indication(interactionState, LocalIndication.current)
9192
.padding(contentPadding),
9293
horizontalArrangement = Arrangement.Center,
9394
verticalAlignment = Alignment.CenterVertically,

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/QuantitySelector.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
* limitations under the License.
1515
*/
1616

17+
@file:Suppress("DEPRECATION") // FIXME move to new ConstraintLayout dep once released
18+
1719
package com.example.jetsnack.ui.components
1820

1921
import androidx.compose.animation.Crossfade
@@ -69,7 +71,7 @@ fun QuantitySelector(
6971
}
7072
)
7173
Crossfade(
72-
current = count,
74+
targetState = count,
7375
modifier = Modifier
7476
.constrainAs(quantity) { baseline.linkTo(qty.baseline) }
7577
) {

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Scaffold.kt

+3-4
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import androidx.compose.material.SnackbarHost
2828
import androidx.compose.material.SnackbarHostState
2929
import androidx.compose.material.rememberScaffoldState
3030
import androidx.compose.runtime.Composable
31-
import androidx.compose.runtime.emptyContent
3231
import androidx.compose.ui.Modifier
3332
import androidx.compose.ui.graphics.Color
3433
import androidx.compose.ui.graphics.Shape
@@ -43,10 +42,10 @@ import com.example.jetsnack.ui.theme.JetsnackTheme
4342
fun JetsnackScaffold(
4443
modifier: Modifier = Modifier,
4544
scaffoldState: ScaffoldState = rememberScaffoldState(),
46-
topBar: @Composable (() -> Unit) = emptyContent(),
47-
bottomBar: @Composable (() -> Unit) = emptyContent(),
45+
topBar: @Composable (() -> Unit) = {},
46+
bottomBar: @Composable (() -> Unit) = {},
4847
snackbarHost: @Composable (SnackbarHostState) -> Unit = { SnackbarHost(it) },
49-
floatingActionButton: @Composable (() -> Unit) = emptyContent(),
48+
floatingActionButton: @Composable (() -> Unit) = {},
5049
floatingActionButtonPosition: FabPosition = FabPosition.End,
5150
isFloatingActionButtonDocked: Boolean = false,
5251
drawerContent: @Composable (ColumnScope.() -> Unit)? = null,

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Snacks.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import androidx.compose.ui.Alignment
4646
import androidx.compose.ui.Modifier
4747
import androidx.compose.ui.graphics.Color
4848
import androidx.compose.ui.layout.ContentScale
49-
import androidx.compose.ui.platform.AmbientDensity
49+
import androidx.compose.ui.platform.LocalDensity
5050
import androidx.compose.ui.text.style.TextOverflow
5151
import androidx.compose.ui.tooling.preview.Preview
5252
import androidx.compose.ui.unit.Dp
@@ -64,7 +64,7 @@ private val HighlightCardPadding = 16.dp
6464
// The Cards show a gradient which spans 3 cards and scrolls with parallax.
6565
private val gradientWidth
6666
@Composable
67-
get() = with(AmbientDensity.current) {
67+
get() = with(LocalDensity.current) {
6868
(3 * (HighlightCardWidth + HighlightCardPadding).toPx())
6969
}
7070

@@ -125,7 +125,7 @@ private fun HighlightedSnacks(
125125
else -> JetsnackTheme.colors.gradient6_2
126126
}
127127
// The Cards show a gradient which spans 3 cards and scrolls with parallax.
128-
val gradientWidth = with(AmbientDensity.current) {
128+
val gradientWidth = with(LocalDensity.current) {
129129
(3 * (HighlightCardWidth + HighlightCardPadding).toPx())
130130
}
131131
LazyRow(
@@ -208,7 +208,7 @@ private fun HighlightSnackItem(
208208
scroll: Float,
209209
modifier: Modifier = Modifier
210210
) {
211-
val left = index * with(AmbientDensity.current) {
211+
val left = index * with(LocalDensity.current) {
212212
(HighlightCardWidth + HighlightCardPadding).toPx()
213213
}
214214
JetsnackCard(

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Surface.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import androidx.compose.foundation.BorderStroke
2020
import androidx.compose.foundation.background
2121
import androidx.compose.foundation.border
2222
import androidx.compose.foundation.layout.Box
23-
import androidx.compose.material.AmbientContentColor
23+
import androidx.compose.material.LocalContentColor
2424
import androidx.compose.runtime.Composable
2525
import androidx.compose.runtime.Providers
2626
import androidx.compose.ui.Modifier
@@ -60,7 +60,7 @@ fun JetsnackSurface(
6060
)
6161
.clip(shape)
6262
) {
63-
Providers(AmbientContentColor provides contentColor, content = content)
63+
Providers(LocalContentColor provides contentColor, content = content)
6464
}
6565
}
6666

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/Home.kt

+8-3
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,12 @@ import androidx.compose.material.icons.outlined.Search
4343
import androidx.compose.material.icons.outlined.ShoppingCart
4444
import androidx.compose.runtime.Composable
4545
import androidx.compose.runtime.LaunchedEffect
46+
import androidx.compose.runtime.MutableState
4647
import androidx.compose.runtime.getValue
48+
import androidx.compose.runtime.mutableStateOf
4749
import androidx.compose.runtime.remember
4850
import androidx.compose.runtime.rememberCoroutineScope
51+
import androidx.compose.runtime.saveable.rememberSaveable
4952
import androidx.compose.runtime.savedinstancestate.savedInstanceState
5053
import androidx.compose.ui.Alignment
5154
import androidx.compose.ui.Modifier
@@ -60,7 +63,7 @@ import androidx.compose.ui.layout.MeasureResult
6063
import androidx.compose.ui.layout.MeasureScope
6164
import androidx.compose.ui.layout.Placeable
6265
import androidx.compose.ui.layout.layoutId
63-
import androidx.compose.ui.platform.AmbientConfiguration
66+
import androidx.compose.ui.platform.LocalConfiguration
6467
import androidx.compose.ui.res.stringResource
6568
import androidx.compose.ui.tooling.preview.Preview
6669
import androidx.compose.ui.unit.Dp
@@ -78,7 +81,9 @@ import kotlinx.coroutines.launch
7881

7982
@Composable
8083
fun Home(onSnackSelected: (Long) -> Unit) {
81-
val (currentSection, setCurrentSection) = savedInstanceState { HomeSections.Feed }
84+
val (currentSection, setCurrentSection) = rememberSaveable {
85+
mutableStateOf(HomeSections.Feed)
86+
}
8287
val navItems = HomeSections.values().toList()
8388
JetsnackScaffold(
8489
bottomBar = {
@@ -152,7 +157,7 @@ private fun JetsnackBottomNav(
152157
Text(
153158
text = stringResource(section.title).toUpperCase(
154159
ConfigurationCompat.getLocales(
155-
AmbientConfiguration.current
160+
LocalConfiguration.current
156161
).get(0)
157162
),
158163
color = tint,

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/cart/Cart.kt

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
* limitations under the License.
1515
*/
1616

17+
@file:Suppress("DEPRECATION") // FIXME move to new ConstraintLayout dep once released
18+
1719
package com.example.jetsnack.ui.home.cart
1820

1921
import androidx.compose.foundation.background

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Categories.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private fun SearchCategory(
132132

133133
// Image is sized to the larger of height of item, or a minimum value
134134
// i.e. may appear larger than item (but clipped to the item bounds)
135-
val imageSize = max(MinImageSize.toIntPx(), constraints.maxHeight)
135+
val imageSize = max(MinImageSize.roundToPx(), constraints.maxHeight)
136136
val imagePlaceable = measurables[1].measure(Constraints.fixed(imageSize, imageSize))
137137
layout(
138138
width = constraints.maxWidth,

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Results.kt

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
* limitations under the License.
1515
*/
1616

17+
@file:Suppress("DEPRECATION") // FIXME move to new ConstraintLayout dep once released
18+
1719
package com.example.jetsnack.ui.home.search
1820

1921
import androidx.compose.foundation.Image

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/snackdetail/SnackDetail.kt

+7-7
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import androidx.compose.ui.Modifier
4848
import androidx.compose.ui.graphics.Brush
4949
import androidx.compose.ui.graphics.graphicsLayer
5050
import androidx.compose.ui.layout.Layout
51-
import androidx.compose.ui.platform.AmbientDensity
51+
import androidx.compose.ui.platform.LocalDensity
5252
import androidx.compose.ui.res.stringResource
5353
import androidx.compose.ui.tooling.preview.Preview
5454
import androidx.compose.ui.unit.Constraints
@@ -213,8 +213,8 @@ private fun Body(
213213

214214
@Composable
215215
private fun Title(snack: Snack, scroll: Float) {
216-
val maxOffset = with(AmbientDensity.current) { MaxTitleOffset.toPx() }
217-
val minOffset = with(AmbientDensity.current) { MinTitleOffset.toPx() }
216+
val maxOffset = with(LocalDensity.current) { MaxTitleOffset.toPx() }
217+
val minOffset = with(LocalDensity.current) { MinTitleOffset.toPx() }
218218
val offset = (maxOffset - scroll).coerceAtLeast(minOffset)
219219
Column(
220220
verticalArrangement = Arrangement.Bottom,
@@ -256,7 +256,7 @@ private fun Image(
256256
imageUrl: String,
257257
scroll: Float
258258
) {
259-
val collapseRange = with(AmbientDensity.current) { (MaxTitleOffset - MinTitleOffset).toPx() }
259+
val collapseRange = with(LocalDensity.current) { (MaxTitleOffset - MinTitleOffset).toPx() }
260260
val collapseFraction = (scroll / collapseRange).coerceIn(0f, 1f)
261261

262262
CollapsingImageLayout(
@@ -283,12 +283,12 @@ private fun CollapsingImageLayout(
283283
) { measurables, constraints ->
284284
check(measurables.size == 1)
285285

286-
val imageMaxSize = min(ExpandedImageSize.toIntPx(), constraints.maxWidth)
287-
val imageMinSize = max(CollapsedImageSize.toIntPx(), constraints.minWidth)
286+
val imageMaxSize = min(ExpandedImageSize.roundToPx(), constraints.maxWidth)
287+
val imageMinSize = max(CollapsedImageSize.roundToPx(), constraints.minWidth)
288288
val imageWidth = lerp(imageMaxSize, imageMinSize, collapseFraction)
289289
val imagePlaceable = measurables[0].measure(Constraints.fixed(imageWidth, imageWidth))
290290

291-
val imageY = lerp(MinTitleOffset, MinImageOffset, collapseFraction).toIntPx()
291+
val imageY = lerp(MinTitleOffset, MinImageOffset, collapseFraction).roundToPx()
292292
val imageX = lerp(
293293
(constraints.maxWidth - imageWidth) / 2, // centered when expanded
294294
constraints.maxWidth - imageWidth, // right aligned when collapsed

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/theme/Theme.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ import androidx.compose.runtime.getValue
2727
import androidx.compose.runtime.mutableStateOf
2828
import androidx.compose.runtime.remember
2929
import androidx.compose.runtime.setValue
30-
import androidx.compose.runtime.staticAmbientOf
30+
import androidx.compose.runtime.staticCompositionLocalOf
3131
import androidx.compose.ui.graphics.Color
32-
import com.example.jetsnack.ui.utils.SysUiController
32+
import com.example.jetsnack.ui.utils.LocalSysUiController
3333

3434
private val LightColorPalette = JetsnackColors(
3535
brand = Shadow5,
@@ -84,7 +84,7 @@ fun JetsnackTheme(
8484
) {
8585
val colors = if (darkTheme) DarkColorPalette else LightColorPalette
8686

87-
val sysUiController = SysUiController.current
87+
val sysUiController = LocalSysUiController.current
8888
SideEffect {
8989
sysUiController.setSystemBarsColor(
9090
color = colors.uiBackground.copy(alpha = AlphaNearOpaque)
@@ -104,7 +104,7 @@ fun JetsnackTheme(
104104
object JetsnackTheme {
105105
val colors: JetsnackColors
106106
@Composable
107-
get() = AmbientJetsnackColors.current
107+
get() = LocalJetsnackColors.current
108108
}
109109

110110
/**
@@ -225,10 +225,10 @@ fun ProvideJetsnackColors(
225225
) {
226226
val colorPalette = remember { colors }
227227
colorPalette.update(colors)
228-
Providers(AmbientJetsnackColors provides colorPalette, content = content)
228+
Providers(LocalJetsnackColors provides colorPalette, content = content)
229229
}
230230

231-
private val AmbientJetsnackColors = staticAmbientOf<JetsnackColors> {
231+
private val LocalJetsnackColors = staticCompositionLocalOf<JetsnackColors> {
232232
error("No JetsnackColorPalette provided")
233233
}
234234

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/utils/Navigation.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package com.example.jetsnack.ui.utils
1919
import android.os.Parcelable
2020
import androidx.activity.OnBackPressedCallback
2121
import androidx.activity.OnBackPressedDispatcher
22-
import androidx.compose.runtime.savedinstancestate.listSaver
22+
import androidx.compose.runtime.saveable.listSaver
2323
import androidx.compose.runtime.toMutableStateList
2424

2525
/**

‎Jetsnack/app/src/main/java/com/example/jetsnack/ui/utils/SystemUi.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package com.example.jetsnack.ui.utils
1919
import android.os.Build
2020
import android.view.View
2121
import android.view.Window
22-
import androidx.compose.runtime.staticAmbientOf
22+
import androidx.compose.runtime.staticCompositionLocalOf
2323
import androidx.compose.ui.graphics.Color
2424
import androidx.compose.ui.graphics.compositeOver
2525
import androidx.compose.ui.graphics.luminance
@@ -141,10 +141,10 @@ private class SystemUiControllerImpl(private val window: Window) : SystemUiContr
141141
}
142142

143143
/**
144-
* An [androidx.compose.runtime.Ambient] holding the current [SysUiController]. Defaults to a
144+
* An [androidx.compose.runtime.Ambient] holding the current [LocalSysUiController]. Defaults to a
145145
* no-op controller; consumers should [provide][androidx.compose.runtime.Providers] a real one.
146146
*/
147-
val SysUiController = staticAmbientOf<SystemUiController> {
147+
val LocalSysUiController = staticCompositionLocalOf<SystemUiController> {
148148
FakeSystemUiController
149149
}
150150

‎Jetsnack/build.gradle

+15-8
Original file line numberDiff line numberDiff line change
@@ -34,29 +34,36 @@ plugins {
3434

3535
subprojects {
3636
repositories {
37+
maven { url 'https://storage.googleapis.com/temp-androidx-snapshot.appspot.com/7123292/' }
3738
google()
3839
jcenter()
39-
40-
if (!Libs.AndroidX.Compose.snapshot.isEmpty()) {
41-
maven {
42-
url "https://androidx.dev/snapshots/builds/${Libs.AndroidX.Compose.snapshot}/artifacts/repository/"
43-
}
44-
}
45-
4640
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
4741
}
4842

4943
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
5044
kotlinOptions {
5145
jvmTarget = '1.8'
5246
allWarningsAsErrors = true
53-
freeCompilerArgs += '-Xallow-jvm-ir-dependencies'
5447
// Opt-in to experimental compose APIs
5548
freeCompilerArgs += '-Xopt-in=kotlin.RequiresOptIn'
5649
// Enable experimental coroutines APIs, including collectAsState()
5750
freeCompilerArgs += '-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi'
5851
}
5952
}
53+
54+
// FIXME: Only needed for Compose 1.0.0-alpha12 snapshots
55+
configurations.configureEach {
56+
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
57+
if (details.requested.group == 'androidx.lifecycle' &&
58+
details.requested.name != 'lifecycle-viewmodel-compose') {
59+
details.useVersion('2.3.0-rc01')
60+
}
61+
if (details.requested.group == 'androidx.savedstate') {
62+
details.useVersion('1.1.0-rc01')
63+
}
64+
}
65+
}
66+
6067
apply plugin: 'com.diffplug.spotless'
6168
spotless {
6269
kotlin {

‎Jetsnack/buildSrc/src/main/java/com/example/jetsnack/buildsrc/Dependencies.kt

+11-3
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ object Libs {
2525
const val junit = "junit:junit:4.13"
2626

2727
object Accompanist {
28-
private const val version = "0.5.0"
28+
private const val version = "0.5.1.compose-7123292-SNAPSHOT"
2929
const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version"
3030
const val insets = "dev.chrisbanes.accompanist:accompanist-insets:$version"
3131
}
3232

3333
object Kotlin {
34-
private const val version = "1.4.21-2"
34+
private const val version = "1.4.30"
3535
const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$version"
3636
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$version"
3737
const val extensions = "org.jetbrains.kotlin:kotlin-android-extensions:$version"
@@ -49,7 +49,7 @@ object Libs {
4949

5050
object Compose {
5151
const val snapshot = ""
52-
const val version = "1.0.0-alpha11"
52+
const val version = "1.0.0-SNAPSHOT"
5353

5454
const val foundation = "androidx.compose.foundation:foundation:${version}"
5555
const val layout = "androidx.compose.foundation:foundation-layout:${version}"
@@ -62,6 +62,14 @@ object Libs {
6262
const val iconsExtended = "androidx.compose.material:material-icons-extended:$version"
6363
}
6464

65+
object Activity {
66+
const val activityCompose = "androidx.activity:activity-compose:1.3.0-SNAPSHOT"
67+
}
68+
69+
object Lifecycle {
70+
const val viewModelCompose = "androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-SNAPSHOT"
71+
}
72+
6573
object Test {
6674
private const val version = "1.2.0"
6775
const val core = "androidx.test:core:$version"
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)
Please sign in to comment.