From e0d0892aca088019fec67cb1e8fd0448784ef155 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Fri, 4 Dec 2020 19:01:41 +0100 Subject: [PATCH 01/28] Update AS Canary version & added download link 2 changes to the README: - Updated recommended AS canary version to Arctic Fox 2020.3.1. - Add a link that takes directly to the AS canary download page. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ba8363afc5..978d4aef97 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ For more information, please [read the documentation](https://developer.android. 💻 Requirements ------------ -To try out these sample apps, you need to use the latest Canary version of Android Studio 4.2. +To try out these sample apps, you need to use the latest [Canary version of Android Studio Arctic Fox 2020.3.1](https://developer.android.com/studio/preview). You can clone this repository or import the project from Android Studio following the steps [here](https://developer.android.com/jetpack/compose/setup#sample). From d15fe9340432525d75258e8a117467adbd1ab046 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Thu, 10 Dec 2020 16:56:06 +0100 Subject: [PATCH 02/28] [Jetnews] Update to snapshot 7024175 --- .../main/java/com/example/jetnews/ui/SwipeToRefresh.kt | 7 ++++++- .../src/main/java/com/example/jetnews/ui/theme/Theme.kt | 4 ---- JetNews/build.gradle | 8 ++++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt index ff0a30199b..1b89edad2b 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt @@ -28,7 +28,9 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.gesture.scrollorientationlocking.Orientation import androidx.compose.ui.platform.AmbientDensity +import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp +import kotlin.math.roundToInt private val RefreshDistance = 80.dp @@ -59,7 +61,10 @@ fun SwipeToRefreshLayout( ) ) { content() - Box(Modifier.align(Alignment.TopCenter).offset(y = { state.offset.value })) { + Box(Modifier + .align(Alignment.TopCenter) + .offset { IntOffset(0, state.offset.value.roundToInt()) } + ) { if (state.offset.value != -refreshDistance) { refreshIndicator() } diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt index 00bd9a7463..5ebcd0c944 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt @@ -43,10 +43,6 @@ private val DarkThemeColors = darkColors( error = Red200 ) -@Composable -val Colors.snackbarAction: Color - get() = if (isLight) Red300 else Red700 - @Composable fun JetnewsTheme( darkTheme: Boolean = isSystemInDarkTheme(), diff --git a/JetNews/build.gradle b/JetNews/build.gradle index 4e82506134..d8d6470253 100644 --- a/JetNews/build.gradle +++ b/JetNews/build.gradle @@ -16,8 +16,8 @@ buildscript { ext.kotlin_version = '1.4.20' - ext.compose_version = '1.0.0-alpha08' - ext.coroutines_version = '1.4.1' + ext.compose_version = '1.0.0-SNAPSHOT' + ext.coroutines_version = '1.4.2' repositories { google() @@ -36,6 +36,10 @@ plugins { subprojects { repositories { + maven { + def snapshot = "7024175" + url "https://androidx.dev/snapshots/builds/$snapshot/artifacts/repository/" + } google() jcenter() } From 119df1d06f536d17ccd48606f3aa2544c51bafae Mon Sep 17 00:00:00 2001 From: Manuel Vivo Date: Fri, 11 Dec 2020 08:10:05 +0100 Subject: [PATCH 03/28] Updates Crane to 7001724 snapshot --- .../compose/samples/crane/base/BaseUserInput.kt | 7 ++++--- .../compose/samples/crane/base/ExploreSection.kt | 4 ++-- .../androidx/compose/samples/crane/base/Scaffold.kt | 4 ++-- .../compose/samples/crane/calendar/Calendar.kt | 10 +++++----- .../samples/crane/calendar/model/CalendarMonth.kt | 2 +- .../compose/samples/crane/home/HomeFeatures.kt | 4 ++-- .../androidx/compose/samples/crane/ui/CraneTheme.kt | 4 ++-- .../java/com/example/crane/buildsrc/Dependencies.kt | 6 +++--- 8 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt index e42d380cdf..24134903df 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt @@ -27,6 +27,7 @@ import androidx.compose.foundation.text.BasicTextField import androidx.compose.material.AmbientContentColor import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme +import androidx.compose.material.OutlinedTextField import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.runtime.Composable @@ -117,7 +118,7 @@ private fun CraneBaseUserInput( showCaption: () -> Boolean = { true }, tintIcon: () -> Boolean, tint: Color = AmbientContentColor.current, - children: @Composable () -> Unit + content: @Composable () -> Unit ) { Surface(modifier = modifier, color = MaterialTheme.colors.primaryVariant) { Row(Modifier.padding(all = 12.dp)) { @@ -138,7 +139,7 @@ private fun CraneBaseUserInput( Spacer(Modifier.preferredWidth(8.dp)) } Row(Modifier.weight(1f).align(Alignment.CenterVertically)) { - children() + content() } } } @@ -146,7 +147,7 @@ private fun CraneBaseUserInput( @Preview @Composable -fun previewInput() { +fun PreviewInput() { CraneScaffold { CraneBaseUserInput( tintIcon = { true }, diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt index ca73321280..cfffa731e2 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt @@ -119,8 +119,8 @@ private fun ExploreItem( } @Composable -private fun ExploreImageContainer(children: @Composable () -> Unit) { +private fun ExploreImageContainer(content: @Composable () -> Unit) { Surface(Modifier.preferredSize(width = 60.dp, height = 60.dp), RoundedCornerShape(4.dp)) { - children() + content() } } diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/base/Scaffold.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/base/Scaffold.kt index 91ade84053..33087fc1f3 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/base/Scaffold.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/base/Scaffold.kt @@ -22,10 +22,10 @@ import androidx.compose.runtime.Composable import androidx.compose.samples.crane.ui.CraneTheme @Composable -fun CraneScaffold(children: @Composable () -> Unit) { +fun CraneScaffold(content: @Composable () -> Unit) { CraneTheme { Surface(color = MaterialTheme.colors.primary) { - children() + content() } } } diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt index 113775a69b..f06b07b7bc 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt @@ -195,21 +195,21 @@ private fun Day(name: String) { private fun DayContainer( modifier: Modifier = Modifier, backgroundColor: Color = Color.Transparent, - children: @Composable () -> Unit + content: @Composable () -> Unit ) { // What if this doesn't fit the screen? - LayoutFlexible(1f) + LayoutAspectRatio(1f) Surface( modifier = modifier.preferredSize(width = CELL_SIZE, height = CELL_SIZE), color = backgroundColor ) { - children() + content() } } @Composable private fun DayStatusContainer( status: DaySelectedStatus, - children: @Composable () -> Unit + content: @Composable () -> Unit ) { if (status.isMarked()) { Box { @@ -220,10 +220,10 @@ private fun DayStatusContainer( } else if (status == DaySelectedStatus.LastDay) { SemiRect(color = color, lookingLeft = true) } - children() + content() } } else { - children() + content() } } diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/model/CalendarMonth.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/model/CalendarMonth.kt index faf2189e66..19d0d3f8f9 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/model/CalendarMonth.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/model/CalendarMonth.kt @@ -23,7 +23,7 @@ data class CalendarMonth( val monthNumber: Int, val startDayOfWeek: DayOfWeek ) { - val days = mutableListOf().apply { + private val days = mutableListOf().apply { // Add offset of the start of the month for (i in 1..startDayOfWeek.ordinal) { add( diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/home/HomeFeatures.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/home/HomeFeatures.kt index 64a6f46479..7622f64d08 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/home/HomeFeatures.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/home/HomeFeatures.kt @@ -67,8 +67,8 @@ fun EatSearchContent(datesSelected: String, eatUpdates: EatSearchContentUpdates) } @Composable -private fun CraneSearch(searchItems: @Composable () -> Unit) { +private fun CraneSearch(content: @Composable () -> Unit) { Column(Modifier.padding(start = 24.dp, top = 0.dp, end = 24.dp, bottom = 12.dp)) { - searchItems() + content() } } diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/ui/CraneTheme.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/ui/CraneTheme.kt index 5090238d65..85531fe883 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/ui/CraneTheme.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/ui/CraneTheme.kt @@ -49,8 +49,8 @@ val BottomSheetShape = RoundedCornerShape( ) @Composable -fun CraneTheme(children: @Composable () -> Unit) { +fun CraneTheme(content: @Composable () -> Unit) { MaterialTheme(colors = craneColors, typography = craneTypography) { - children() + content() } } diff --git a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt index c5c8d7d80c..a06b85667b 100644 --- a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt +++ b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt @@ -30,7 +30,7 @@ object Libs { } object Accompanist { - private const val version = "0.4.0" + private const val version = "0.4.1.compose-7001724-SNAPSHOT" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" } @@ -49,8 +49,8 @@ object Libs { object AndroidX { object Compose { - const val snapshot = "" - const val version = "1.0.0-alpha08" + const val snapshot = "7001724" + private const val version = "1.0.0-SNAPSHOT" const val runtime = "androidx.compose.runtime:runtime:$version" const val runtimeLivedata = "androidx.compose.runtime:runtime-livedata:$version" From cf7173a768043bc82ba3d49568685b4d21749d45 Mon Sep 17 00:00:00 2001 From: Manuel Vivo Date: Fri, 11 Dec 2020 08:20:58 +0100 Subject: [PATCH 04/28] Removes unused import --- .../java/androidx/compose/samples/crane/base/BaseUserInput.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt index 24134903df..9091b5730c 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt @@ -27,7 +27,6 @@ import androidx.compose.foundation.text.BasicTextField import androidx.compose.material.AmbientContentColor import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme -import androidx.compose.material.OutlinedTextField import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.runtime.Composable From 14f883f1b3487ba1ce010b9906847db2c398e912 Mon Sep 17 00:00:00 2001 From: Manuel Vivo Date: Fri, 11 Dec 2020 12:23:32 +0100 Subject: [PATCH 05/28] [Crane] Updates to 7024175 snapshot --- .../samples/crane/calendar/CalendarTest.kt | 16 +++++++------- .../samples/crane/base/ExploreSection.kt | 22 +++++++++++-------- .../samples/crane/calendar/Calendar.kt | 4 ++-- .../samples/crane/details/DetailsActivity.kt | 4 ++-- .../example/crane/buildsrc/Dependencies.kt | 4 ++-- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt index 8986639ff3..efbc86fe61 100644 --- a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt +++ b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.test.SemanticsMatcher import androidx.compose.ui.test.assertLabelEquals import androidx.compose.ui.test.junit4.ComposeTestRule import androidx.compose.ui.test.junit4.createAndroidComposeRule -import androidx.compose.ui.test.onNodeWithLabel +import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick import androidx.compose.ui.test.performScrollTo import dagger.hilt.android.testing.HiltAndroidRule @@ -69,16 +69,16 @@ class CalendarTest { @Test fun scrollsToTheBottom() { - composeTestRule.onNodeWithLabel("January 1").assertExists() - composeTestRule.onNodeWithLabel("December 31").performScrollTo().performClick() + composeTestRule.onNodeWithText("January 1").assertExists() + composeTestRule.onNodeWithText("December 31").performScrollTo().performClick() assert(datesRepository.datesSelected.toString() == "Dec 31") } @Test fun onDaySelected() { - composeTestRule.onNodeWithLabel("January 1").assertExists() - composeTestRule.onNodeWithLabel("January 2").assertExists().performClick() - composeTestRule.onNodeWithLabel("January 3").assertExists() + composeTestRule.onNodeWithText("January 1").assertExists() + composeTestRule.onNodeWithText("January 2").assertExists().performClick() + composeTestRule.onNodeWithText("January 3").assertExists() val datesNoSelected = composeTestRule.onDateNodes(NoSelected) datesNoSelected[0].assertLabelEquals("January 1") @@ -89,13 +89,13 @@ class CalendarTest { @Test fun twoDaysSelected() { - composeTestRule.onNodeWithLabel("January 2").assertExists().performClick() + composeTestRule.onNodeWithText("January 2").assertExists().performClick() val datesNoSelectedOneClick = composeTestRule.onDateNodes(NoSelected) datesNoSelectedOneClick[0].assertLabelEquals("January 1") datesNoSelectedOneClick[1].assertLabelEquals("January 3") - composeTestRule.onNodeWithLabel("January 4").assertExists().performClick() + composeTestRule.onNodeWithText("January 4").assertExists().performClick() composeTestRule.onDateNode(FirstDay).assertLabelEquals("January 2") composeTestRule.onDateNode(Selected).assertLabelEquals("January 3") diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt index cfffa731e2..2337008872 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt @@ -27,6 +27,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.preferredHeight import androidx.compose.foundation.layout.preferredSize import androidx.compose.foundation.layout.preferredWidth +import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumnFor import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Divider @@ -62,16 +63,19 @@ fun ExploreSection( style = MaterialTheme.typography.caption.copy(color = crane_caption) ) Spacer(Modifier.preferredHeight(8.dp)) - LazyColumnFor( + LazyColumn( modifier = Modifier.weight(1f), - items = exploreList - ) { item -> - ExploreItem( - modifier = Modifier.fillParentMaxWidth(), - item = item, - onItemClicked = onItemClicked - ) - Divider(color = crane_divider_color) + ) { + items(exploreList) { exploreItem -> + Column(Modifier.fillParentMaxWidth()) { + ExploreItem( + modifier = Modifier.fillParentMaxWidth(), + item = exploreItem, + onItemClicked = onItemClicked + ) + Divider(color = crane_divider_color) + } + } } } } diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt index f06b07b7bc..b049a7b383 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt @@ -50,7 +50,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.semantics.SemanticsPropertyKey import androidx.compose.ui.semantics.SemanticsPropertyReceiver -import androidx.compose.ui.semantics.accessibilityLabel +import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -137,7 +137,7 @@ private fun Week( day, onDayClicked, Modifier.semantics { - accessibilityLabel = "${month.name} ${day.value}" + contentDescription = "${month.name} ${day.value}" dayStatusProperty = day.status } ) diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/details/DetailsActivity.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/details/DetailsActivity.kt index be529b7af3..05b2c8acd4 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/details/DetailsActivity.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/details/DetailsActivity.kt @@ -29,7 +29,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.preferredHeight import androidx.compose.material.Button -import androidx.compose.material.ButtonConstants +import androidx.compose.material.ButtonDefaults import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.runtime.Composable @@ -186,7 +186,7 @@ private fun ZoomControls( private fun ZoomButton(text: String, onClick: () -> Unit) { Button( modifier = Modifier.padding(8.dp), - colors = ButtonConstants.defaultButtonColors( + colors = ButtonDefaults.buttonColors( backgroundColor = MaterialTheme.colors.onPrimary, contentColor = MaterialTheme.colors.primary ), diff --git a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt index a06b85667b..4e01a88ded 100644 --- a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt +++ b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt @@ -30,7 +30,7 @@ object Libs { } object Accompanist { - private const val version = "0.4.1.compose-7001724-SNAPSHOT" + private const val version = "0.4.1.compose-7024175-SNAPSHOT" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" } @@ -49,7 +49,7 @@ object Libs { object AndroidX { object Compose { - const val snapshot = "7001724" + const val snapshot = "7024175" private const val version = "1.0.0-SNAPSHOT" const val runtime = "androidx.compose.runtime:runtime:$version" From b6abae4b9e1a8e968b68e90c434d53ea2ae3089d Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Mon, 14 Dec 2020 09:07:48 +0100 Subject: [PATCH 06/28] [Jetnews] Update to snapshot 7030654 --- JetNews/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JetNews/build.gradle b/JetNews/build.gradle index d8d6470253..6bf26d750d 100644 --- a/JetNews/build.gradle +++ b/JetNews/build.gradle @@ -15,7 +15,7 @@ */ buildscript { - ext.kotlin_version = '1.4.20' + ext.kotlin_version = '1.4.21' ext.compose_version = '1.0.0-SNAPSHOT' ext.coroutines_version = '1.4.2' @@ -37,7 +37,7 @@ plugins { subprojects { repositories { maven { - def snapshot = "7024175" + def snapshot = "7030654" url "https://androidx.dev/snapshots/builds/$snapshot/artifacts/repository/" } google() From 741b5ada2e3445faec8d8247dc9d7ad93f8f94ff Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Mon, 14 Dec 2020 09:32:42 +0100 Subject: [PATCH 07/28] [Jetnews] Apply spotless fixes --- .../src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt | 7 ++++--- .../src/main/java/com/example/jetnews/ui/theme/Theme.kt | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt index 1b89edad2b..2ddcee56ff 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt @@ -61,9 +61,10 @@ fun SwipeToRefreshLayout( ) ) { content() - Box(Modifier - .align(Alignment.TopCenter) - .offset { IntOffset(0, state.offset.value.roundToInt()) } + Box( + Modifier + .align(Alignment.TopCenter) + .offset { IntOffset(0, state.offset.value.roundToInt()) } ) { if (state.offset.value != -refreshDistance) { refreshIndicator() diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt index 5ebcd0c944..0cf964ffb9 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/theme/Theme.kt @@ -17,7 +17,6 @@ package com.example.jetnews.ui.theme import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material.Colors import androidx.compose.material.MaterialTheme import androidx.compose.material.darkColors import androidx.compose.material.lightColors From 3d0b3bc2141d135e8427bf99e4d7a80e8c50ea30 Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Mon, 14 Dec 2020 17:57:37 +0000 Subject: [PATCH 08/28] [Jetcaster] Upgrade to alpha09 snapshot Upgrade to Gradle 6.8 Remove unused imports Apply Compose API changes --- .../main/java/com/example/jetcaster/Graph.kt | 15 ++++----- .../example/jetcaster/data/PodcastStore.kt | 2 +- .../jetcaster/data/PodcastsRepository.kt | 2 +- .../jetcaster/ui/home/HomeViewModel.kt | 2 +- .../ui/home/category/PodcastCategory.kt | 33 ++++++++++--------- .../example/jetcaster/util/DynamicTheming.kt | 1 - .../example/jetcaster/util/GradientScrim.kt | 9 +++-- .../java/com/example/jetcaster/util/Pager.kt | 2 +- .../jetcaster/buildsrc/dependencies.kt | 16 ++++----- .../gradle/wrapper/gradle-wrapper.properties | 5 +-- 10 files changed, 43 insertions(+), 44 deletions(-) diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/Graph.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/Graph.kt index d07eccf869..ed5a79333d 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/Graph.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/Graph.kt @@ -39,16 +39,15 @@ import java.io.File * For a real app, you would use something like Hilt/Dagger instead. */ object Graph { - lateinit var okHttpClient: OkHttpClient - private set + private lateinit var okHttpClient: OkHttpClient lateinit var database: JetcasterDatabase private set - val transactionRunner: TransactionRunner + private val transactionRunner: TransactionRunner get() = database.transactionRunnerDao() - val syndFeedInput by lazy { SyndFeedInput() } + private val syndFeedInput by lazy { SyndFeedInput() } val podcastRepository by lazy { PodcastsRepository( @@ -61,7 +60,7 @@ object Graph { ) } - val podcastFetcher by lazy { + private val podcastFetcher by lazy { PodcastsFetcher( okHttpClient = okHttpClient, syndFeedInput = syndFeedInput, @@ -77,7 +76,7 @@ object Graph { ) } - val episodeStore by lazy { + private val episodeStore by lazy { EpisodeStore( episodesDao = database.episodesDao() ) @@ -92,10 +91,10 @@ object Graph { ) } - val mainDispatcher: CoroutineDispatcher + private val mainDispatcher: CoroutineDispatcher get() = Dispatchers.Main - val ioDispatcher: CoroutineDispatcher + private val ioDispatcher: CoroutineDispatcher get() = Dispatchers.IO fun provide(context: Context) { diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/data/PodcastStore.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/data/PodcastStore.kt index fbeaa4031e..b9ace6b52e 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/data/PodcastStore.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/data/PodcastStore.kt @@ -56,7 +56,7 @@ class PodcastStore( return podcastDao.followedPodcastsSortedByLastEpisode(limit) } - suspend fun followPodcast(podcastUri: String) { + private suspend fun followPodcast(podcastUri: String) { podcastFollowedEntryDao.insert(PodcastFollowedEntry(podcastUri = podcastUri)) } diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/data/PodcastsRepository.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/data/PodcastsRepository.kt index 2762890283..b07a55387d 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/data/PodcastsRepository.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/data/PodcastsRepository.kt @@ -32,7 +32,7 @@ class PodcastsRepository( private val episodeStore: EpisodeStore, private val categoryStore: CategoryStore, private val transactionRunner: TransactionRunner, - private val mainDispatcher: CoroutineDispatcher + mainDispatcher: CoroutineDispatcher ) { private var refreshingJob: Job? = null diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/HomeViewModel.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/HomeViewModel.kt index e1e1170b22..d354685a4d 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/HomeViewModel.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/HomeViewModel.kt @@ -74,7 +74,7 @@ class HomeViewModel( refresh(force = false) } - fun refresh(force: Boolean) { + private fun refresh(force: Boolean) { viewModelScope.launch { runCatching { refreshing.value = true 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 85ba395eb9..e01a83c94e 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 @@ -31,7 +31,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.preferredSize import androidx.compose.foundation.layout.preferredWidth import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.LazyRowForIndexed +import androidx.compose.foundation.lazy.LazyRow import androidx.compose.material.AmbientContentAlpha import androidx.compose.material.AmbientContentColor import androidx.compose.material.ContentAlpha @@ -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.rememberRippleIndication +import androidx.compose.material.ripple.rememberRipple import androidx.compose.runtime.Composable import androidx.compose.runtime.Providers import androidx.compose.runtime.collectAsState @@ -210,7 +210,7 @@ fun EpisodeListItem( contentScale = ContentScale.Fit, colorFilter = ColorFilter.tint(AmbientContentColor.current), modifier = Modifier - .clickable(indication = rememberRippleIndication(bounded = false, radius = 24.dp)) { + .clickable(indication = rememberRipple(bounded = false, radius = 24.dp)) { /* TODO */ } .preferredSize(36.dp) @@ -281,20 +281,21 @@ private fun CategoryPodcastRow( modifier: Modifier = Modifier ) { val lastIndex = podcasts.size - 1 - LazyRowForIndexed( - items = podcasts, - modifier = modifier, - contentPadding = PaddingValues(start = Keyline1, top = 8.dp, end = Keyline1, bottom = 24.dp) - ) { index, (podcast, _, isFollowed) -> - TopPodcastRowItem( - podcastTitle = podcast.title, - podcastImageUrl = podcast.imageUrl, - isFollowed = isFollowed, - onToggleFollowClicked = { onTogglePodcastFollowed(podcast.uri) }, - modifier = Modifier.preferredWidth(128.dp) - ) + LazyRow(modifier = modifier, + contentPadding = PaddingValues(start = Keyline1, top = 8.dp, end = Keyline1, bottom = 24.dp) + ) { + itemsIndexed(items = podcasts, + itemContent = { index: Int, (podcast, _, isFollowed): PodcastWithExtraInfo -> + TopPodcastRowItem( + podcastTitle = podcast.title, + podcastImageUrl = podcast.imageUrl, + isFollowed = isFollowed, + onToggleFollowClicked = { onTogglePodcastFollowed(podcast.uri) }, + modifier = Modifier.preferredWidth(128.dp) + ) - if (index < lastIndex) Spacer(Modifier.preferredWidth(24.dp)) + if (index < lastIndex) Spacer(Modifier.preferredWidth(24.dp)) + }) } } 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 956498798f..482f4c37e0 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 @@ -31,7 +31,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.AmbientContext -import androidx.core.graphics.drawable.toBitmap import androidx.palette.graphics.Palette import coil.Coil import coil.request.ImageRequest 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 24f9e80f16..1190a98f25 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 @@ -24,8 +24,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.composed import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.VerticalGradient import kotlin.math.pow /** @@ -64,10 +64,9 @@ fun Modifier.verticalGradientScrim( var height by remember { mutableStateOf(0f) } val brush = remember(color, numStops, startYPercentage, endYPercentage, height) { - VerticalGradient( - colors = colors, - startY = height * startYPercentage, - endY = height * endYPercentage + Brush.verticalGradient(colors = colors, + startY = height * startYPercentage, + endY = height * endYPercentage ) } 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 072fe3981f..60265535e6 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 @@ -120,7 +120,7 @@ class PagerState( @Immutable private data class PageData(val page: Int) : ParentDataModifier { - override fun Density.modifyParentData(parentData: Any?): Any? = this@PageData + override fun Density.modifyParentData(parentData: Any?): Any = this@PageData } private val Measurable.page: Int 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 75d461e2fd..6f55b04bd9 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:7.0.0-alpha02" + const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha03" const val jdkDesugar = "com.android.tools:desugar_jdk_libs:1.0.9" const val junit = "junit:junit:4.13" @@ -29,20 +29,20 @@ object Libs { const val material = "com.google.android.material:material:1.1.0" object Accompanist { - private const val version = "0.4.0" + private const val version = "0.4.1.compose-7030654-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.20" + private const val version = "1.4.21" 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" } object Coroutines { - private const val version = "1.4.1" + private const val version = "1.4.2" const val core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$version" const val android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$version" const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:$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-alpha08" + private const val snapshot = "7030654" + private const val version = "1.0.0-SNAPSHOT" @get:JvmStatic val snapshotUrl: String @@ -110,7 +110,7 @@ object Libs { object Rome { private const val version = "1.14.1" - val rome = "com.rometools:rome:$version" - val modules = "com.rometools:rome-modules:$version" + const val rome = "com.rometools:rome:$version" + const val modules = "com.rometools:rome-modules:$version" } } diff --git a/Jetcaster/gradle/wrapper/gradle-wrapper.properties b/Jetcaster/gradle/wrapper/gradle-wrapper.properties index 19869d6658..99338ec765 100644 --- a/Jetcaster/gradle/wrapper/gradle-wrapper.properties +++ b/Jetcaster/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Mon Dec 14 17:32:45 GMT 2020 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-rc-1-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +zipStoreBase=GRADLE_USER_HOME From 17c6687f7e6cb4b27f2a5f8c9f8a660b94e3e32e Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Tue, 15 Dec 2020 08:43:42 +0100 Subject: [PATCH 09/28] [Jetnews] Fix swipe to refresh using nested scrolling --- .../com/example/jetnews/ui/SwipeToRefresh.kt | 80 ++++++++++++++++--- 1 file changed, 71 insertions(+), 9 deletions(-) diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt index 2ddcee56ff..34f7d35998 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt @@ -20,15 +20,21 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.offset import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.FractionalThreshold +import androidx.compose.material.SwipeableState import androidx.compose.material.rememberSwipeableState import androidx.compose.material.swipeable import androidx.compose.runtime.Composable import androidx.compose.runtime.onCommit import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.gesture.nestedscroll.NestedScrollConnection +import androidx.compose.ui.gesture.nestedscroll.NestedScrollSource +import androidx.compose.ui.gesture.nestedscroll.nestedScroll import androidx.compose.ui.gesture.scrollorientationlocking.Orientation import androidx.compose.ui.platform.AmbientDensity import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.Velocity import androidx.compose.ui.unit.dp import kotlin.math.roundToInt @@ -50,15 +56,17 @@ fun SwipeToRefreshLayout( } Box( - modifier = Modifier.swipeable( - state = state, - anchors = mapOf( - -refreshDistance to false, - refreshDistance to true - ), - thresholds = { _, _ -> FractionalThreshold(0.5f) }, - orientation = Orientation.Vertical - ) + modifier = Modifier + .nestedScroll(state.PreUpPostDownNestedScrollConnection) + .swipeable( + state = state, + anchors = mapOf( + -refreshDistance to false, + refreshDistance to true + ), + thresholds = { _, _ -> FractionalThreshold(0.5f) }, + orientation = Orientation.Vertical + ) ) { content() Box( @@ -79,3 +87,57 @@ fun SwipeToRefreshLayout( } } } + +/** + * Temporary workaround for nested scrolling behavior. See b/174756744 + */ +@ExperimentalMaterialApi +private val SwipeableState.PreUpPostDownNestedScrollConnection: NestedScrollConnection + get() = object : NestedScrollConnection { + override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset { + val delta = available.toFloat() + return if (delta < 0 && source == NestedScrollSource.Drag) { + performDrag(delta).toOffset() + } else { + Offset.Zero + } + } + + override fun onPostScroll( + consumed: Offset, + available: Offset, + source: NestedScrollSource + ): Offset { + return if (source == NestedScrollSource.Drag) { + performDrag(available.toFloat()).toOffset() + } else { + Offset.Zero + } + } + + override fun onPreFling(available: Velocity): Velocity { + val toFling = available.pixelsPerSecond.toFloat() + return if (toFling < 0) { + performFling(velocity = toFling) {} + // since we go to the anchor with tween settling, consume all for the best UX + available + } else { + Velocity.Zero + } + } + + override fun onPostFling( + consumed: Velocity, + available: Velocity, + onFinished: (Velocity) -> Unit + ) { + performFling(velocity = available.pixelsPerSecond.toFloat()) { + // since we go to the anchor with tween settling, consume all for the best UX + onFinished.invoke(available) + } + } + + private fun Float.toOffset(): Offset = Offset(0f, this) + + private fun Offset.toFloat(): Float = this.y + } From 882e0b46d3e086433e0bf447dd0e9542be26fa75 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Tue, 15 Dec 2020 09:01:56 +0100 Subject: [PATCH 10/28] [Crane] Update to snapshot 7033025 --- .../src/main/java/com/example/crane/buildsrc/Dependencies.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt index 4e01a88ded..9503b5bc93 100644 --- a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt +++ b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt @@ -30,7 +30,7 @@ object Libs { } object Accompanist { - private const val version = "0.4.1.compose-7024175-SNAPSHOT" + private const val version = "0.4.1.compose-7033025-SNAPSHOT" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" } @@ -49,7 +49,7 @@ object Libs { object AndroidX { object Compose { - const val snapshot = "7024175" + const val snapshot = "7033025" private const val version = "1.0.0-SNAPSHOT" const val runtime = "androidx.compose.runtime:runtime:$version" From 9325b2b8ce23240ce69e7963c3a2e12228fb3a2f Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Tue, 15 Dec 2020 10:19:25 +0100 Subject: [PATCH 11/28] [Jetnews] Upgrade to snapshot 7033025 --- JetNews/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JetNews/build.gradle b/JetNews/build.gradle index 6bf26d750d..7ec8539e59 100644 --- a/JetNews/build.gradle +++ b/JetNews/build.gradle @@ -37,7 +37,7 @@ plugins { subprojects { repositories { maven { - def snapshot = "7030654" + def snapshot = "7033025" url "https://androidx.dev/snapshots/builds/$snapshot/artifacts/repository/" } google() From 77c7e37336760f7a82bc067ee2482bacbb14fe00 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Tue, 15 Dec 2020 11:48:23 +0100 Subject: [PATCH 12/28] [Crane] Spotless fixes --- .../java/androidx/compose/samples/crane/base/ExploreSection.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt index 2337008872..7522815bcd 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt @@ -28,7 +28,6 @@ import androidx.compose.foundation.layout.preferredHeight import androidx.compose.foundation.layout.preferredSize import androidx.compose.foundation.layout.preferredWidth import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.LazyColumnFor import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Divider import androidx.compose.material.MaterialTheme From 8faa6b778977a0b061a87657af48d08676a71f2e Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Tue, 15 Dec 2020 11:51:03 +0100 Subject: [PATCH 13/28] [Jetnews] Explain workaround for swipe to refresh --- .../app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt index 34f7d35998..3bf09254ed 100644 --- a/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt +++ b/JetNews/app/src/main/java/com/example/jetnews/ui/SwipeToRefresh.kt @@ -89,7 +89,8 @@ fun SwipeToRefreshLayout( } /** - * Temporary workaround for nested scrolling behavior. See b/174756744 + * Temporary workaround for nested scrolling behavior. There is no default implementation for + * pull to refresh yet, this nested scroll connection mimics the behavior. */ @ExperimentalMaterialApi private val SwipeableState.PreUpPostDownNestedScrollConnection: NestedScrollConnection From fd80518ba75760c00c4c275abc99036d232b05a8 Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Tue, 15 Dec 2020 11:45:15 +0000 Subject: [PATCH 14/28] [Jetcaster] Update to 7033025 snapshot --- .../app/src/main/java/com/example/jetcaster/ui/home/Home.kt | 4 ++-- .../main/java/com/example/jetcaster/util/DynamicTheming.kt | 1 + .../main/java/com/example/jetcaster/buildsrc/dependencies.kt | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) 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 3d25762446..545dfbe261 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 @@ -39,7 +39,7 @@ import androidx.compose.material.IconButton import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.material.Tab -import androidx.compose.material.TabConstants.defaultTabIndicatorOffset +import androidx.compose.material.TabDefaults.tabIndicatorOffset import androidx.compose.material.TabPosition import androidx.compose.material.TabRow import androidx.compose.material.Text @@ -251,7 +251,7 @@ private fun HomeCategoryTabs( val selectedIndex = categories.indexOfFirst { it == selectedCategory } val indicator = @Composable { tabPositions: List -> HomeCategoryTabIndicator( - Modifier.defaultTabIndicatorOffset(tabPositions[selectedIndex]) + Modifier.tabIndicatorOffset(tabPositions[selectedIndex]) ) } 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 482f4c37e0..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 @@ -31,6 +31,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.AmbientContext +import androidx.core.graphics.drawable.toBitmap import androidx.palette.graphics.Palette import coil.Coil import coil.request.ImageRequest 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 6f55b04bd9..a32f0fefdb 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 @@ -29,7 +29,7 @@ object Libs { const val material = "com.google.android.material:material:1.1.0" object Accompanist { - private const val version = "0.4.1.compose-7030654-SNAPSHOT" + private const val version = "0.4.1.compose-7033025-SNAPSHOT" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" const val insets = "dev.chrisbanes.accompanist:accompanist-insets:$version" } @@ -62,7 +62,7 @@ object Libs { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha04" object Compose { - private const val snapshot = "7030654" + private const val snapshot = "7033025" private const val version = "1.0.0-SNAPSHOT" @get:JvmStatic From 485b9a397a8dc9137ed565b74552f0adbf894a35 Mon Sep 17 00:00:00 2001 From: Nick Butcher Date: Tue, 15 Dec 2020 13:41:51 +0000 Subject: [PATCH 15/28] [Jetsnack] Update to snapshot 7033025. Change-Id: I6a0335dcdbba5395ef6ae2ab211100c2da2085d0 --- .../example/jetsnack/ui/components/Button.kt | 16 ++-- .../jetsnack/ui/components/Gradient.kt | 88 +++---------------- .../jetsnack/ui/components/Scaffold.kt | 4 +- .../example/jetsnack/ui/components/Snacks.kt | 13 +-- .../jetsnack/ui/home/search/Categories.kt | 13 +-- .../jetsnack/ui/home/search/Results.kt | 8 +- .../example/jetsnack/ui/home/search/Search.kt | 7 +- .../jetsnack/ui/snackdetail/SnackDetail.kt | 4 +- .../com/example/jetsnack/ui/theme/Theme.kt | 2 +- Jetsnack/build.gradle | 2 +- .../example/jetsnack/buildsrc/Dependencies.kt | 14 +-- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 12 files changed, 57 insertions(+), 116 deletions(-) diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Button.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Button.kt index 5becf92c45..af37fa96e5 100644 --- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Button.kt +++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Button.kt @@ -17,6 +17,7 @@ package com.example.jetsnack.ui.components import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues @@ -26,13 +27,14 @@ import androidx.compose.foundation.layout.defaultMinSizeConstraints import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.ButtonConstants +import androidx.compose.material.ButtonDefaults import androidx.compose.material.MaterialTheme import androidx.compose.material.ProvideTextStyle import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import com.example.jetsnack.ui.theme.JetsnackTheme @@ -48,7 +50,7 @@ fun JetsnackButton( disabledBackgroundGradient: List = JetsnackTheme.colors.interactiveSecondary, contentColor: Color = JetsnackTheme.colors.textInteractive, disabledContentColor: Color = JetsnackTheme.colors.textHelp, - contentPadding: PaddingValues = ButtonConstants.DefaultContentPadding, + contentPadding: PaddingValues = ButtonDefaults.ContentPadding, content: @Composable RowScope.() -> Unit ) { JetsnackSurface( @@ -58,8 +60,10 @@ fun JetsnackButton( border = border, modifier = modifier .clip(shape) - .horizontalGradientBackground( - colors = if (enabled) backgroundGradient else disabledBackgroundGradient + .background( + Brush.horizontalGradient( + colors = if (enabled) backgroundGradient else disabledBackgroundGradient + ) ) .clickable( onClick = onClick, @@ -72,8 +76,8 @@ fun JetsnackButton( Row( Modifier .defaultMinSizeConstraints( - minWidth = ButtonConstants.DefaultMinWidth, - minHeight = ButtonConstants.DefaultMinHeight + minWidth = ButtonDefaults.MinWidth, + minHeight = ButtonDefaults.MinHeight ) .fillMaxWidth() .padding(contentPadding), diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Gradient.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Gradient.kt index 5390fa8c72..cf5475e886 100644 --- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Gradient.kt +++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Gradient.kt @@ -19,76 +19,34 @@ package com.example.jetsnack.ui.components import androidx.compose.animation.animate import androidx.compose.foundation.background import androidx.compose.foundation.border -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.draw.drawWithCache import androidx.compose.ui.draw.drawWithContent -import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.HorizontalGradient -import androidx.compose.ui.graphics.LinearGradient import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.TileMode -import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp -fun Modifier.horizontalGradientBackground( - colors: List -) = drawWithCache { - // Use drawWithCache modifier to create and cache the gradient once size is known or changes. - val gradient = HorizontalGradient( - startX = 0.0f, - endX = size.width, - colors = colors - ) - onDrawBehind { - drawRect(brush = gradient) - } -} - fun Modifier.diagonalGradientTint( colors: List, blendMode: BlendMode -) = gradientTint(colors, blendMode) { gradientColors, size -> - LinearGradient( - colors = gradientColors, - startX = 0f, - startY = 0f, - endX = size.width, - endY = size.height +) = drawWithContent { + drawContent() + drawRect( + brush = Brush.linearGradient(colors), + blendMode = blendMode ) } -fun Modifier.gradientTint( - colors: List, - blendMode: BlendMode, - brushProvider: (List, Size) -> LinearGradient -) = composed { - var size by remember { mutableStateOf(Size.Zero) } - val gradient = remember(colors, size) { brushProvider(colors, size) } - drawWithContent { - drawContent() - size = this.size - drawRect( - brush = gradient, - blendMode = blendMode - ) - } -} - fun Modifier.offsetGradientBackground( colors: List, width: Float, offset: Float = 0f ) = background( - HorizontalGradient( + Brush.horizontalGradient( colors, startX = -offset, endX = width - offset, @@ -100,19 +58,11 @@ fun Modifier.diagonalGradientBorder( colors: List, borderSize: Dp = 2.dp, shape: Shape -) = gradientBorder( - colors = colors, - borderSize = borderSize, +) = border( + width = borderSize, + brush = Brush.linearGradient(colors), shape = shape -) { gradientColors, size -> - LinearGradient( - colors = gradientColors, - startX = 0f, - startY = 0f, - endX = size.width.toFloat(), - endY = size.height.toFloat() - ) -} +) fun Modifier.fadeInDiagonalGradientBorder( showBorder: Boolean, @@ -129,19 +79,3 @@ fun Modifier.fadeInDiagonalGradientBorder( shape = shape ) } - -fun Modifier.gradientBorder( - colors: List, - borderSize: Dp = 2.dp, - shape: Shape, - brushProvider: (List, IntSize) -> LinearGradient -) = composed { - var size by remember { mutableStateOf(IntSize.Zero) } - val gradient = remember(colors, size) { brushProvider(colors, size) } - val sizeProvider = onSizeChanged { size = it } - sizeProvider then border( - width = borderSize, - brush = gradient, - shape = shape - ) -} diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Scaffold.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Scaffold.kt index 63c514070f..b4116ad573 100644 --- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Scaffold.kt +++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Scaffold.kt @@ -18,7 +18,7 @@ package com.example.jetsnack.ui.components import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.material.DrawerConstants +import androidx.compose.material.DrawerDefaults import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.FabPosition import androidx.compose.material.MaterialTheme @@ -51,7 +51,7 @@ fun JetsnackScaffold( isFloatingActionButtonDocked: Boolean = false, drawerContent: @Composable (ColumnScope.() -> Unit)? = null, drawerShape: Shape = MaterialTheme.shapes.large, - drawerElevation: Dp = DrawerConstants.DefaultElevation, + drawerElevation: Dp = DrawerDefaults.Elevation, drawerBackgroundColor: Color = JetsnackTheme.colors.uiBackground, drawerContentColor: Color = JetsnackTheme.colors.textSecondary, drawerScrimColor: Color = JetsnackTheme.colors.uiBorder, diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Snacks.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Snacks.kt index fdf333812f..192d32736e 100644 --- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Snacks.kt +++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Snacks.kt @@ -31,7 +31,7 @@ import androidx.compose.foundation.layout.preferredHeightIn import androidx.compose.foundation.layout.preferredSize import androidx.compose.foundation.layout.preferredWidth import androidx.compose.foundation.layout.wrapContentWidth -import androidx.compose.foundation.lazy.LazyRowFor +import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.Icon @@ -61,8 +61,8 @@ private val HighlightCardWidth = 170.dp private val HighlightCardPadding = 16.dp // The Cards show a gradient which spans 3 cards and scrolls with parallax. -@Composable private val gradientWidth + @Composable get() = with(AmbientDensity.current) { (3 * (HighlightCardWidth + HighlightCardPadding).toPx()) } @@ -144,12 +144,13 @@ private fun Snacks( onSnackClick: (Long) -> Unit, modifier: Modifier = Modifier ) { - LazyRowFor( - items = snacks, + LazyRow( modifier = modifier, contentPadding = PaddingValues(start = 12.dp, end = 12.dp) - ) { snack -> - SnackItem(snack, onSnackClick) + ) { + items(snacks) { snack -> + SnackItem(snack, onSnackClick) + } } } diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Categories.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Categories.kt index 2c8e301e86..79b34a27d2 100644 --- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Categories.kt +++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Categories.kt @@ -16,6 +16,7 @@ package com.example.jetsnack.ui.home.search +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -25,7 +26,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.preferredHeight import androidx.compose.foundation.layout.preferredHeightIn import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.foundation.lazy.LazyColumnForIndexed +import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.MaterialTheme import androidx.compose.material.Text @@ -33,6 +34,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.Layout import androidx.compose.ui.tooling.preview.Preview @@ -42,7 +44,6 @@ import com.example.jetsnack.model.SearchCategory import com.example.jetsnack.model.SearchCategoryCollection import com.example.jetsnack.ui.components.SnackImage import com.example.jetsnack.ui.components.VerticalGrid -import com.example.jetsnack.ui.components.horizontalGradientBackground import com.example.jetsnack.ui.theme.JetsnackTheme import kotlin.math.max @@ -50,8 +51,10 @@ import kotlin.math.max fun SearchCategories( categories: List ) { - LazyColumnForIndexed(categories) { index, collection -> - SearchCategoryCollection(collection, index) + LazyColumn { + itemsIndexed(categories) { index, collection -> + SearchCategoryCollection(collection, index) + } } Spacer(Modifier.preferredHeight(8.dp)) } @@ -104,7 +107,7 @@ private fun SearchCategory( .aspectRatio(1.45f) .shadow(elevation = 3.dp, shape = CategoryShape) .clip(CategoryShape) - .horizontalGradientBackground(gradient) + .background(Brush.horizontalGradient(gradient)) .clickable { /* todo */ }, content = { Text( diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Results.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Results.kt index f41a2f0c1a..4c717322d0 100644 --- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Results.kt +++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Results.kt @@ -29,7 +29,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.preferredHeight import androidx.compose.foundation.layout.preferredSize import androidx.compose.foundation.layout.wrapContentSize -import androidx.compose.foundation.lazy.LazyColumnForIndexed +import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme @@ -70,8 +70,10 @@ fun SearchResults( color = JetsnackTheme.colors.textPrimary, modifier = Modifier.padding(horizontal = 24.dp, vertical = 4.dp) ) - LazyColumnForIndexed(searchResults) { index, snack -> - SearchResult(snack, onSnackClick, index != 0) + LazyColumn { + itemsIndexed(searchResults) { index, snack -> + SearchResult(snack, onSnackClick, index != 0) + } } } } diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Search.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Search.kt index b53dd7a159..2d5b6a1836 100644 --- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Search.kt +++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/search/Search.kt @@ -16,7 +16,6 @@ package com.example.jetsnack.ui.home.search -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -47,9 +46,8 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.ExperimentalFocus import androidx.compose.ui.focus.isFocused -import androidx.compose.ui.focusObserver +import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview @@ -160,7 +158,6 @@ class SearchState( } } -@OptIn(ExperimentalFoundationApi::class, ExperimentalFocus::class) @Composable private fun SearchBar( query: TextFieldValue, @@ -203,7 +200,7 @@ private fun SearchBar( onValueChange = onQueryChange, modifier = Modifier .weight(1f) - .focusObserver { + .onFocusChanged { onSearchFocusChange(it.isFocused) } ) diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/snackdetail/SnackDetail.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/snackdetail/SnackDetail.kt index 16c1708d7e..558229db3a 100644 --- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/snackdetail/SnackDetail.kt +++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/snackdetail/SnackDetail.kt @@ -45,6 +45,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.Layout import androidx.compose.ui.platform.AmbientDensity @@ -65,7 +66,6 @@ import com.example.jetsnack.ui.components.JetsnackSurface import com.example.jetsnack.ui.components.QuantitySelector import com.example.jetsnack.ui.components.SnackCollection import com.example.jetsnack.ui.components.SnackImage -import com.example.jetsnack.ui.components.horizontalGradientBackground import com.example.jetsnack.ui.theme.JetsnackTheme import com.example.jetsnack.ui.theme.Neutral8 import com.example.jetsnack.ui.utils.formatPrice @@ -110,7 +110,7 @@ private fun Header() { modifier = Modifier .preferredHeight(280.dp) .fillMaxWidth() - .horizontalGradientBackground(JetsnackTheme.colors.interactivePrimary) + .background(Brush.horizontalGradient(JetsnackTheme.colors.interactivePrimary)) ) } diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/theme/Theme.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/theme/Theme.kt index e26bf50977..d7d2d1f97c 100644 --- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/theme/Theme.kt +++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/theme/Theme.kt @@ -102,8 +102,8 @@ fun JetsnackTheme( } object JetsnackTheme { - @Composable val colors: JetsnackColors + @Composable get() = AmbientJetsnackColors.current } diff --git a/Jetsnack/build.gradle b/Jetsnack/build.gradle index 4cb422b32e..b6882e7e7d 100644 --- a/Jetsnack/build.gradle +++ b/Jetsnack/build.gradle @@ -29,7 +29,7 @@ buildscript { } plugins { - id 'com.diffplug.spotless' version '5.7.0' + id 'com.diffplug.spotless' version '5.8.2' } subprojects { diff --git a/Jetsnack/buildSrc/src/main/java/com/example/jetsnack/buildsrc/Dependencies.kt b/Jetsnack/buildSrc/src/main/java/com/example/jetsnack/buildsrc/Dependencies.kt index 5acffd0c45..ae83eaeaa1 100644 --- a/Jetsnack/buildSrc/src/main/java/com/example/jetsnack/buildsrc/Dependencies.kt +++ b/Jetsnack/buildSrc/src/main/java/com/example/jetsnack/buildsrc/Dependencies.kt @@ -17,21 +17,21 @@ package com.example.jetsnack.buildsrc object Versions { - const val ktlint = "0.39.0" + const val ktlint = "0.40.0" } object Libs { - const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha02" + const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha03" const val junit = "junit:junit:4.13" object Accompanist { - private const val version = "0.4.0" + private const val version = "0.4.1.compose-7033025-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.20" + private const val version = "1.4.21" 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" @@ -45,11 +45,11 @@ object Libs { } object AndroidX { - const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha04" + const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha05" object Compose { - const val snapshot = "" - const val version = "1.0.0-alpha08" + const val snapshot = "7033025" + const val version = "1.0.0-SNAPSHOT" const val foundation = "androidx.compose.foundation:foundation:${version}" const val layout = "androidx.compose.foundation:foundation-layout:${version}" diff --git a/Jetsnack/gradle/wrapper/gradle-wrapper.properties b/Jetsnack/gradle/wrapper/gradle-wrapper.properties index 4d9ca16491..089b9f390f 100644 --- a/Jetsnack/gradle/wrapper/gradle-wrapper.properties +++ b/Jetsnack/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-rc-1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 064ce45860b5eeff742305a4d0b4e46b40f434ca Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Tue, 15 Dec 2020 14:13:44 +0000 Subject: [PATCH 16/28] [Jetcaster] Apply Spotless --- .../main/java/com/example/jetcaster/Graph.kt | 2 +- .../ui/home/category/PodcastCategory.kt | 29 ++++++++++--------- .../example/jetcaster/util/GradientScrim.kt | 7 +++-- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/Graph.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/Graph.kt index ed5a79333d..612a6349f2 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/Graph.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/Graph.kt @@ -39,7 +39,7 @@ import java.io.File * For a real app, you would use something like Hilt/Dagger instead. */ object Graph { - private lateinit var okHttpClient: OkHttpClient + lateinit var okHttpClient: OkHttpClient lateinit var database: JetcasterDatabase private set 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 e01a83c94e..46c82e6fed 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 @@ -281,21 +281,24 @@ private fun CategoryPodcastRow( modifier: Modifier = Modifier ) { val lastIndex = podcasts.size - 1 - LazyRow(modifier = modifier, - contentPadding = PaddingValues(start = Keyline1, top = 8.dp, end = Keyline1, bottom = 24.dp) + LazyRow( + modifier = modifier, + contentPadding = PaddingValues(start = Keyline1, top = 8.dp, end = Keyline1, bottom = 24.dp) ) { - itemsIndexed(items = podcasts, - itemContent = { index: Int, (podcast, _, isFollowed): PodcastWithExtraInfo -> - TopPodcastRowItem( - podcastTitle = podcast.title, - podcastImageUrl = podcast.imageUrl, - isFollowed = isFollowed, - onToggleFollowClicked = { onTogglePodcastFollowed(podcast.uri) }, - modifier = Modifier.preferredWidth(128.dp) - ) + itemsIndexed( + items = podcasts, + itemContent = { index: Int, (podcast, _, isFollowed): PodcastWithExtraInfo -> + TopPodcastRowItem( + podcastTitle = podcast.title, + podcastImageUrl = podcast.imageUrl, + isFollowed = isFollowed, + onToggleFollowClicked = { onTogglePodcastFollowed(podcast.uri) }, + modifier = Modifier.preferredWidth(128.dp) + ) - if (index < lastIndex) Spacer(Modifier.preferredWidth(24.dp)) - }) + if (index < lastIndex) Spacer(Modifier.preferredWidth(24.dp)) + } + ) } } 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 1190a98f25..94b62682d1 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 @@ -64,9 +64,10 @@ fun Modifier.verticalGradientScrim( var height by remember { mutableStateOf(0f) } val brush = remember(color, numStops, startYPercentage, endYPercentage, height) { - Brush.verticalGradient(colors = colors, - startY = height * startYPercentage, - endY = height * endYPercentage + Brush.verticalGradient( + colors = colors, + startY = height * startYPercentage, + endY = height * endYPercentage ) } From 2c91ab22bc14868911ac5ad0927cc31bfeff5e2b Mon Sep 17 00:00:00 2001 From: Jose Alcerreca Date: Mon, 14 Dec 2020 18:08:29 +0100 Subject: [PATCH 17/28] [Jetchat] Updates to 7033025 Change-Id: If9d947be516e81f6ccaa779fe57616887469f00e --- .../compose/jetchat/ConversationTest.kt | 4 ++-- .../example/compose/jetchat/UserInputTest.kt | 14 ++++++------ .../jetchat/conversation/MessageFormatter.kt | 3 ++- .../compose/jetchat/conversation/UserInput.kt | 22 ++++++++----------- Jetchat/build.gradle | 1 + .../compose/jetchat/buildsrc/dependencies.kt | 9 ++++---- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 7 files changed, 27 insertions(+), 28 deletions(-) diff --git a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/ConversationTest.kt b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/ConversationTest.kt index 640bf3e985..128e9e3d91 100644 --- a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/ConversationTest.kt +++ b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/ConversationTest.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.center import androidx.compose.ui.test.junit4.createAndroidComposeRule -import androidx.compose.ui.test.onNodeWithLabel +import androidx.compose.ui.test.onNodeWithContentDescription import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick @@ -164,5 +164,5 @@ class ConversationTest { composeTestRule.onNodeWithText(activity.getString(R.string.jumpBottom)) private fun openEmojiSelector() = - composeTestRule.onNodeWithLabel(activity.getString(R.string.emoji_selector_bt_desc)).performClick() + composeTestRule.onNodeWithContentDescription(activity.getString(R.string.emoji_selector_bt_desc)).performClick() } diff --git a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt index d8b39526df..27f2dbec45 100644 --- a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt +++ b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt @@ -24,10 +24,10 @@ import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.assertIsEnabled import androidx.compose.ui.test.assertIsNotEnabled import androidx.compose.ui.test.hasAnyAncestor -import androidx.compose.ui.test.hasLabel +import androidx.compose.ui.test.hasContentDescription import androidx.compose.ui.test.hasSetTextAction import androidx.compose.ui.test.junit4.createAndroidComposeRule -import androidx.compose.ui.test.onNodeWithLabel +import androidx.compose.ui.test.onNodeWithContentDescription import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick import androidx.compose.ui.test.performTextInput @@ -137,19 +137,19 @@ class UserInputTest { } private fun clickOnTextField() = - composeTestRule.onNodeWithLabel(activity.getString(R.string.textfield_desc)) + composeTestRule.onNodeWithContentDescription(activity.getString(R.string.textfield_desc)) .performClick() private fun openEmojiSelector() = - composeTestRule.onNodeWithLabel(activity.getString(R.string.emoji_selector_bt_desc)) + composeTestRule.onNodeWithContentDescription(activity.getString(R.string.emoji_selector_bt_desc)) .performClick() private fun assertEmojiSelectorIsDisplayed() = - composeTestRule.onNodeWithLabel(activity.getString(R.string.emoji_selector_desc)) + composeTestRule.onNodeWithContentDescription(activity.getString(R.string.emoji_selector_desc)) .assertIsDisplayed() private fun assertEmojiSelectorDoesNotExist() = - composeTestRule.onNodeWithLabel(activity.getString(R.string.emoji_selector_desc)) + composeTestRule.onNodeWithContentDescription(activity.getString(R.string.emoji_selector_desc)) .assertDoesNotExist() private fun findSendButton() = composeTestRule.onNodeWithText(activity.getString(R.string.send)) @@ -157,7 +157,7 @@ class UserInputTest { private fun findTextInputField(): SemanticsNodeInteraction { return composeTestRule.onNode( hasSetTextAction() and - hasAnyAncestor(hasLabel(activity.getString(R.string.textfield_desc))) + hasAnyAncestor(hasContentDescription(activity.getString(R.string.textfield_desc))) ) } } diff --git a/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/MessageFormatter.kt b/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/MessageFormatter.kt index a0772df2e3..fdd1b9dc16 100644 --- a/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/MessageFormatter.kt +++ b/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/MessageFormatter.kt @@ -24,6 +24,7 @@ import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.StringAnnotation import androidx.compose.ui.text.annotatedString +import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight @@ -62,7 +63,7 @@ fun messageFormatter( ): AnnotatedString { val tokens = symbolPattern.findAll(text) - return annotatedString { + return buildAnnotatedString { var cursorPosition = 0 diff --git a/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/UserInput.kt b/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/UserInput.kt index 58a6fb0640..efef2a25c3 100644 --- a/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/UserInput.kt +++ b/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/UserInput.kt @@ -44,7 +44,7 @@ import androidx.compose.material.AmbientContentAlpha import androidx.compose.material.AmbientContentColor import androidx.compose.material.AmbientTextStyle import androidx.compose.material.Button -import androidx.compose.material.ButtonConstants +import androidx.compose.material.ButtonDefaults import androidx.compose.material.ContentAlpha import androidx.compose.material.Divider import androidx.compose.material.Icon @@ -70,10 +70,9 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus -import androidx.compose.ui.focus.ExperimentalFocus import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusState -import androidx.compose.ui.focusObserver +import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector @@ -81,7 +80,7 @@ import androidx.compose.ui.layout.FirstBaseline import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.SemanticsPropertyKey import androidx.compose.ui.semantics.SemanticsPropertyReceiver -import androidx.compose.ui.semantics.accessibilityLabel +import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.SoftwareKeyboardController import androidx.compose.ui.text.TextRange @@ -188,7 +187,6 @@ private fun TextFieldValue.addText(newString: String): TextFieldValue { return this.copy(text = newText, selection = newSelection) } -@OptIn(ExperimentalFocus::class) @Composable private fun SelectorExpanded( currentSelector: InputSelector, @@ -311,7 +309,7 @@ private fun UserInputSelector( val disabledContentColor = MaterialTheme.colors.onSurface.copy(alpha = ContentAlpha.disabled) - val buttonColors = ButtonConstants.defaultButtonColors( + val buttonColors = ButtonDefaults.buttonColors( disabledBackgroundColor = MaterialTheme.colors.surface, disabledContentColor = disabledContentColor ) @@ -345,7 +343,7 @@ private fun InputSelectorButton( ) { IconButton( onClick = onClick, - modifier = Modifier.semantics { accessibilityLabel = description } + modifier = Modifier.semantics { contentDescription = description } ) { Providers(AmbientContentAlpha provides ContentAlpha.medium) { val tint = if (selected) MaterialTheme.colors.primary else AmbientContentColor.current @@ -366,7 +364,6 @@ private fun NotAvailablePopup(onDismissed: () -> Unit) { val KeyboardShownKey = SemanticsPropertyKey("KeyboardShownKey") var SemanticsPropertyReceiver.keyboardShownProperty by KeyboardShownKey -@OptIn(ExperimentalFocus::class) @ExperimentalFoundationApi @Composable private fun UserInputText( @@ -393,7 +390,7 @@ private fun UserInputText( .fillMaxWidth() .preferredHeight(48.dp) .semantics { - accessibilityLabel = a11ylabel + contentDescription = a11ylabel keyboardShownProperty = keyboardShown }, horizontalArrangement = Arrangement.End @@ -410,7 +407,7 @@ private fun UserInputText( .fillMaxWidth() .padding(start = 16.dp) .align(Alignment.CenterStart) - .focusObserver { state -> + .onFocusChanged { state -> if (lastFocusState != state) { onTextFieldFocused(state == FocusState.Active) } @@ -442,7 +439,6 @@ private fun UserInputText( } } -@OptIn(ExperimentalFocus::class) @Composable fun EmojiSelector( onTextAdded: (String) -> Unit, @@ -455,7 +451,7 @@ fun EmojiSelector( modifier = Modifier .focusRequester(focusRequester) // Requests focus when the Emoji selector is displayed .focus() // Make the emoji selector focusable so it can steal focus from TextField - .semantics { accessibilityLabel = a11yLabel } + .semantics { contentDescription = a11yLabel } ) { Row(modifier = Modifier.fillMaxWidth().padding(horizontal = 8.dp)) { ExtendedSelectorInnerButton( @@ -487,7 +483,7 @@ fun ExtendedSelectorInnerButton( selected: Boolean, modifier: Modifier = Modifier ) { - val colors = ButtonConstants.defaultButtonColors( + val colors = ButtonDefaults.buttonColors( backgroundColor = MaterialTheme.colors.onSurface.copy(alpha = 0.08f), disabledBackgroundColor = getSelectorExpandedColor(), // Same as background contentColor = MaterialTheme.colors.onSurface, diff --git a/Jetchat/build.gradle b/Jetchat/build.gradle index b487e2c1e0..dfb7c9944e 100644 --- a/Jetchat/build.gradle +++ b/Jetchat/build.gradle @@ -43,6 +43,7 @@ subprojects { if (!Libs.AndroidX.Compose.snapshot.isEmpty()) { maven { url Urls.composeSnapshotRepo } + maven { url Urls.accompanistSnapshotRepo } } } diff --git a/Jetchat/buildSrc/src/main/java/com/example/compose/jetchat/buildsrc/dependencies.kt b/Jetchat/buildSrc/src/main/java/com/example/compose/jetchat/buildsrc/dependencies.kt index b19c4b666b..b78674f18b 100644 --- a/Jetchat/buildSrc/src/main/java/com/example/compose/jetchat/buildsrc/dependencies.kt +++ b/Jetchat/buildSrc/src/main/java/com/example/compose/jetchat/buildsrc/dependencies.kt @@ -29,7 +29,7 @@ object Libs { const val material = "com.google.android.material:material:1.1.0" object Kotlin { - private const val version = "1.4.20" + private const val version = "1.4.21" 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" @@ -43,7 +43,7 @@ object Libs { } object Accompanist { - private const val version = "0.4.0" + private const val version = "0.4.1.compose-7033025-SNAPSHOT" const val insets = "dev.chrisbanes.accompanist:accompanist-insets:$version" } @@ -52,8 +52,8 @@ object Libs { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha04" object Compose { - const val snapshot = "" - const val version = "1.0.0-alpha08" + const val snapshot = "7033025" + const val version = "1.0.0-SNAPSHOT" const val foundation = "androidx.compose.foundation:foundation:$version" const val layout = "androidx.compose.foundation:foundation-layout:$version" @@ -99,4 +99,5 @@ object Libs { object Urls { const val composeSnapshotRepo = "https://androidx.dev/snapshots/builds/" + "${Libs.AndroidX.Compose.snapshot}/artifacts/repository/" + const val accompanistSnapshotRepo = "https://oss.sonatype.org/content/repositories/snapshots" } diff --git a/Jetchat/gradle/wrapper/gradle-wrapper.properties b/Jetchat/gradle/wrapper/gradle-wrapper.properties index 88fae9754d..2f4c55bdf8 100644 --- a/Jetchat/gradle/wrapper/gradle-wrapper.properties +++ b/Jetchat/gradle/wrapper/gradle-wrapper.properties @@ -19,4 +19,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-rc-1-bin.zip From 357372cae45e45eb775d5637f855deb4d91c61c0 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Tue, 15 Dec 2020 16:48:55 +0100 Subject: [PATCH 18/28] [Crane] Update dependencies --- Crane/build.gradle | 2 +- .../main/java/com/example/crane/buildsrc/Dependencies.kt | 6 +++--- Crane/gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Crane/build.gradle b/Crane/build.gradle index 776095811c..1e1b42fadc 100644 --- a/Crane/build.gradle +++ b/Crane/build.gradle @@ -31,7 +31,7 @@ buildscript { } plugins { - id 'com.diffplug.spotless' version '5.7.0' + id 'com.diffplug.spotless' version '5.8.2' } subprojects { diff --git a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt index 9503b5bc93..6639536e7f 100644 --- a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt +++ b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt @@ -17,11 +17,11 @@ package com.example.crane.buildsrc object Versions { - const val ktLint = "0.39.0" + const val ktLint = "0.40.0" } object Libs { - const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha02" + const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha03" const val ktLint = "com.pinterest:ktlint:${Versions.ktLint}" object GoogleMaps { @@ -35,7 +35,7 @@ object Libs { } object Kotlin { - private const val version = "1.4.20" + private const val version = "1.4.21" 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" diff --git a/Crane/gradle/wrapper/gradle-wrapper.properties b/Crane/gradle/wrapper/gradle-wrapper.properties index 59a4725244..adcbca81af 100644 --- a/Crane/gradle/wrapper/gradle-wrapper.properties +++ b/Crane/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Oct 23 09:30:32 CEST 2020 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-rc-1-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME From 244576b8e34b00ac53250ea33f6c8df102a0afd7 Mon Sep 17 00:00:00 2001 From: Jose Alcerreca Date: Tue, 15 Dec 2020 17:09:25 +0100 Subject: [PATCH 19/28] [Jetchat] Adds nav bar padding to FAB Change-Id: Id8fc09af891b15c34509b19159623bd9b26c11e5 --- .../compose/jetchat/profile/Profile.kt | 3 ++ .../app/src/main/res/layout/activity_main.xml | 42 ------------------- .../app/src/main/res/layout/app_bar_main.xml | 28 ------------- .../src/main/res/layout/nav_header_main.xml | 38 ----------------- 4 files changed, 3 insertions(+), 108 deletions(-) delete mode 100644 Jetchat/app/src/main/res/layout/activity_main.xml delete mode 100644 Jetchat/app/src/main/res/layout/app_bar_main.xml delete mode 100644 Jetchat/app/src/main/res/layout/nav_header_main.xml diff --git a/Jetchat/app/src/main/java/com/example/compose/jetchat/profile/Profile.kt b/Jetchat/app/src/main/java/com/example/compose/jetchat/profile/Profile.kt index 7c792b347a..d4a88f36b9 100644 --- a/Jetchat/app/src/main/java/com/example/compose/jetchat/profile/Profile.kt +++ b/Jetchat/app/src/main/java/com/example/compose/jetchat/profile/Profile.kt @@ -62,6 +62,7 @@ import com.example.compose.jetchat.components.JetchatAppBar import com.example.compose.jetchat.components.baselineHeight import com.example.compose.jetchat.data.meProfile import com.example.compose.jetchat.theme.JetchatTheme +import dev.chrisbanes.accompanist.insets.navigationBarsPadding import dev.chrisbanes.accompanist.insets.statusBarsPadding @Composable @@ -226,11 +227,13 @@ fun ProfileError() { @Composable fun ProfileFab(extended: Boolean, userIsMe: Boolean, modifier: Modifier = Modifier) { + key(userIsMe) { // Prevent multiple invocations to execute during composition FloatingActionButton( onClick = { /* TODO */ }, modifier = modifier .padding(16.dp) + .navigationBarsPadding() .preferredHeight(48.dp) .widthIn(min = 48.dp), backgroundColor = MaterialTheme.colors.primary, diff --git a/Jetchat/app/src/main/res/layout/activity_main.xml b/Jetchat/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 531b636bfc..0000000000 --- a/Jetchat/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - diff --git a/Jetchat/app/src/main/res/layout/app_bar_main.xml b/Jetchat/app/src/main/res/layout/app_bar_main.xml deleted file mode 100644 index d4f9854fdc..0000000000 --- a/Jetchat/app/src/main/res/layout/app_bar_main.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - diff --git a/Jetchat/app/src/main/res/layout/nav_header_main.xml b/Jetchat/app/src/main/res/layout/nav_header_main.xml deleted file mode 100644 index dc139f94a6..0000000000 --- a/Jetchat/app/src/main/res/layout/nav_header_main.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - From 1795edbf444455be8b9667602453cd392b5a8c11 Mon Sep 17 00:00:00 2001 From: Nick Butcher Date: Tue, 15 Dec 2020 21:09:21 +0000 Subject: [PATCH 20/28] [Owl] Update to snapshot 7033025. Change-Id: I13fc51cb6c007fa26535e67afe47cc840d2baadb --- .../java/com/example/owl/ui/NavigationTest.kt | 10 +++---- .../example/owl/ui/course/CourseDetails.kt | 27 ++++++++++--------- .../example/owl/ui/courses/FeaturedCourses.kt | 4 +-- .../example/owl/ui/onboarding/Onboarding.kt | 4 +-- .../java/com/example/owl/ui/theme/Theme.kt | 10 +++---- .../java/com/example/owl/ui/utils/Scrim.kt | 18 ++++--------- Owl/build.gradle | 2 +- .../com/example/owl/buildsrc/Dependencies.kt | 16 +++++------ Owl/gradle/wrapper/gradle-wrapper.properties | 2 +- 9 files changed, 43 insertions(+), 50 deletions(-) diff --git a/Owl/app/src/androidTest/java/com/example/owl/ui/NavigationTest.kt b/Owl/app/src/androidTest/java/com/example/owl/ui/NavigationTest.kt index ab6c9eaaf4..48bef31b83 100644 --- a/Owl/app/src/androidTest/java/com/example/owl/ui/NavigationTest.kt +++ b/Owl/app/src/androidTest/java/com/example/owl/ui/NavigationTest.kt @@ -18,10 +18,10 @@ package com.example.owl.ui import androidx.activity.ComponentActivity import androidx.compose.runtime.Providers -import androidx.compose.ui.test.hasLabel +import androidx.compose.ui.test.hasContentDescription import androidx.compose.ui.test.hasSubstring import androidx.compose.ui.test.junit4.createAndroidComposeRule -import androidx.compose.ui.test.onNodeWithLabel +import androidx.compose.ui.test.onNodeWithContentDescription import androidx.compose.ui.test.onNodeWithSubstring import androidx.compose.ui.test.performClick import androidx.test.platform.app.InstrumentationRegistry @@ -72,7 +72,7 @@ class NavigationTest { startActivity() // The first screen should be the onboarding screen. // Assert that the FAB label for the onboarding screen exists: - composeTestRule.onNodeWithLabel(getOnboardingFabLabel()).assertExists() + composeTestRule.onNodeWithContentDescription(getOnboardingFabLabel()).assertExists() } @Test @@ -82,7 +82,7 @@ class NavigationTest { // Navigate to the next screen by clicking on the FAB val fabLabel = getOnboardingFabLabel() - composeTestRule.onNodeWithLabel(fabLabel).performClick() + composeTestRule.onNodeWithContentDescription(fabLabel).performClick() // The first course should be shown composeTestRule.onNodeWithSubstring(courses.first().name).assertExists() @@ -95,7 +95,7 @@ class NavigationTest { // Navigate to the first course composeTestRule.onNode( - hasLabel(getFeaturedCourseLabel()).and(hasSubstring(courses.first().name)) + hasContentDescription(getFeaturedCourseLabel()).and(hasSubstring(courses.first().name)) ).performClick() // Assert navigated to the course details diff --git a/Owl/app/src/main/java/com/example/owl/ui/course/CourseDetails.kt b/Owl/app/src/main/java/com/example/owl/ui/course/CourseDetails.kt index 34a834d9f9..dabb991164 100644 --- a/Owl/app/src/main/java/com/example/owl/ui/course/CourseDetails.kt +++ b/Owl/app/src/main/java/com/example/owl/ui/course/CourseDetails.kt @@ -32,7 +32,7 @@ import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.preferredHeight import androidx.compose.foundation.layout.preferredSize -import androidx.compose.foundation.lazy.LazyRowFor +import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.AmbientContentAlpha @@ -298,23 +298,24 @@ private fun RelatedCourses( vertical = 24.dp ) ) - LazyRowFor( - items = relatedCourses, + LazyRow( contentPadding = PaddingValues( start = 16.dp, bottom = 32.dp, end = FabSize + 8.dp ) - ) { related -> - CourseListItem( - course = related, - onClick = { selectCourse(related.id) }, - titleStyle = MaterialTheme.typography.body2, - modifier = Modifier - .padding(end = 8.dp) - .preferredSize(288.dp, 80.dp), - iconSize = 14.dp - ) + ) { + items(relatedCourses) { related -> + CourseListItem( + course = related, + onClick = { selectCourse(related.id) }, + titleStyle = MaterialTheme.typography.body2, + modifier = Modifier + .padding(end = 8.dp) + .preferredSize(288.dp, 80.dp), + iconSize = 14.dp + ) + } } } } diff --git a/Owl/app/src/main/java/com/example/owl/ui/courses/FeaturedCourses.kt b/Owl/app/src/main/java/com/example/owl/ui/courses/FeaturedCourses.kt index 715b7d6daf..25199acbb6 100644 --- a/Owl/app/src/main/java/com/example/owl/ui/courses/FeaturedCourses.kt +++ b/Owl/app/src/main/java/com/example/owl/ui/courses/FeaturedCourses.kt @@ -34,7 +34,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.layout.Layout import androidx.compose.ui.res.stringResource -import androidx.compose.ui.semantics.accessibilityLabel +import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -89,7 +89,7 @@ fun FeaturedCourse( onClick = { selectCourse(course.id) } ) .semantics { - accessibilityLabel = featuredString + contentDescription = featuredString } ) { val (image, avatar, subject, name, steps, icon) = createRefs() diff --git a/Owl/app/src/main/java/com/example/owl/ui/onboarding/Onboarding.kt b/Owl/app/src/main/java/com/example/owl/ui/onboarding/Onboarding.kt index 3e646d50b3..ea48a9de6e 100644 --- a/Owl/app/src/main/java/com/example/owl/ui/onboarding/Onboarding.kt +++ b/Owl/app/src/main/java/com/example/owl/ui/onboarding/Onboarding.kt @@ -60,7 +60,7 @@ import androidx.compose.ui.draw.scale import androidx.compose.ui.layout.Layout import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource -import androidx.compose.ui.semantics.accessibilityLabel +import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -89,7 +89,7 @@ fun Onboarding(onboardingComplete: () -> Unit) { modifier = Modifier .navigationBarsPadding() .semantics { - accessibilityLabel = fabLabel + contentDescription = fabLabel } ) { Icon(Icons.Rounded.Explore) diff --git a/Owl/app/src/main/java/com/example/owl/ui/theme/Theme.kt b/Owl/app/src/main/java/com/example/owl/ui/theme/Theme.kt index 4705cc7cbf..6f8aabe94f 100644 --- a/Owl/app/src/main/java/com/example/owl/ui/theme/Theme.kt +++ b/Owl/app/src/main/java/com/example/owl/ui/theme/Theme.kt @@ -148,35 +148,35 @@ object OwlTheme { /** * Proxy to [MaterialTheme] */ - @Composable val colors: Colors + @Composable get() = MaterialTheme.colors /** * Proxy to [MaterialTheme] */ - @Composable val typography: Typography + @Composable get() = MaterialTheme.typography /** * Proxy to [MaterialTheme] */ - @Composable val shapes: Shapes + @Composable get() = MaterialTheme.shapes /** * Retrieves the current [Elevations] at the call site's position in the hierarchy. */ - @Composable val elevations: Elevations + @Composable get() = AmbientElevations.current /** * Retrieves the current [Images] at the call site's position in the hierarchy. */ - @Composable val images: Images + @Composable get() = AmbientImages.current } diff --git a/Owl/app/src/main/java/com/example/owl/ui/utils/Scrim.kt b/Owl/app/src/main/java/com/example/owl/ui/utils/Scrim.kt index c50bc9f716..77bff3e14d 100644 --- a/Owl/app/src/main/java/com/example/owl/ui/utils/Scrim.kt +++ b/Owl/app/src/main/java/com/example/owl/ui/utils/Scrim.kt @@ -17,22 +17,14 @@ package com.example.owl.ui.utils import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.draw.drawWithContent +import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.VerticalGradient /** * A [Modifier] which draws a vertical gradient */ -fun Modifier.scrim(colors: List): Modifier = drawWithCache { - // Use drawWithCache modifier to create and cache the gradient when size is known or changes. - val gradient = VerticalGradient( - colors = colors, - startY = 0f, - endY = size.height - ) - onDrawWithContent { - drawContent() - drawRect(brush = gradient) - } +fun Modifier.scrim(colors: List): Modifier = drawWithContent { + drawContent() + drawRect(Brush.verticalGradient(colors)) } diff --git a/Owl/build.gradle b/Owl/build.gradle index f8a96a94a9..9d7bfb02d5 100644 --- a/Owl/build.gradle +++ b/Owl/build.gradle @@ -29,7 +29,7 @@ buildscript { } plugins { - id 'com.diffplug.spotless' version '5.7.0' + id 'com.diffplug.spotless' version '5.8.2' } subprojects { diff --git a/Owl/buildSrc/src/main/java/com/example/owl/buildsrc/Dependencies.kt b/Owl/buildSrc/src/main/java/com/example/owl/buildsrc/Dependencies.kt index dc3047dca6..e5d2bfc3f4 100644 --- a/Owl/buildSrc/src/main/java/com/example/owl/buildsrc/Dependencies.kt +++ b/Owl/buildSrc/src/main/java/com/example/owl/buildsrc/Dependencies.kt @@ -17,21 +17,21 @@ package com.example.owl.buildsrc object Versions { - const val ktlint = "0.39.0" + const val ktlint = "0.40.0" } object Libs { - const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha02" + const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha03" const val junit = "junit:junit:4.13" object Accompanist { - private const val version = "0.4.0" + private const val version = "0.4.1.compose-7033025-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.20" + private const val version = "1.4.21" 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" @@ -45,12 +45,12 @@ object Libs { } object AndroidX { - const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha04" - const val navigation = "androidx.navigation:navigation-compose:1.0.0-alpha03" + const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha05" + const val navigation = "androidx.navigation:navigation-compose:1.0.0-SNAPSHOT" object Compose { - const val snapshot = "" - const val version = "1.0.0-alpha08" + const val snapshot = "7033025" + const val version = "1.0.0-SNAPSHOT" const val animation = "androidx.compose.animation:animation:$version" const val foundation = "androidx.compose.foundation:foundation:$version" diff --git a/Owl/gradle/wrapper/gradle-wrapper.properties b/Owl/gradle/wrapper/gradle-wrapper.properties index 4d9ca16491..089b9f390f 100644 --- a/Owl/gradle/wrapper/gradle-wrapper.properties +++ b/Owl/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-rc-1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 49639470aa44248f72b1d6201dd0ad09890189be Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Tue, 15 Dec 2020 22:41:30 +0100 Subject: [PATCH 21/28] Removed AS Version from README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 978d4aef97..89d0f9bb28 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ For more information, please [read the documentation](https://developer.android. 💻 Requirements ------------ -To try out these sample apps, you need to use the latest [Canary version of Android Studio Arctic Fox 2020.3.1](https://developer.android.com/studio/preview). +To try out these sample apps, you need to use the latest [Canary version of Android Studio](https://developer.android.com/studio/preview). You can clone this repository or import the project from Android Studio following the steps [here](https://developer.android.com/jetpack/compose/setup#sample). From 6fbc02ad9eb23abb1c47dbbd74d9cc3348b02127 Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Tue, 15 Dec 2020 22:46:05 +0000 Subject: [PATCH 22/28] [Jetcaster] Use trailing lambda --- .../ui/home/category/PodcastCategory.kt | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) 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 46c82e6fed..7855024834 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 @@ -285,20 +285,17 @@ private fun CategoryPodcastRow( modifier = modifier, contentPadding = PaddingValues(start = Keyline1, top = 8.dp, end = Keyline1, bottom = 24.dp) ) { - itemsIndexed( - items = podcasts, - itemContent = { index: Int, (podcast, _, isFollowed): PodcastWithExtraInfo -> - TopPodcastRowItem( - podcastTitle = podcast.title, - podcastImageUrl = podcast.imageUrl, - isFollowed = isFollowed, - onToggleFollowClicked = { onTogglePodcastFollowed(podcast.uri) }, - modifier = Modifier.preferredWidth(128.dp) - ) + itemsIndexed(items = podcasts) { index: Int, (podcast, _, isFollowed): PodcastWithExtraInfo -> + TopPodcastRowItem( + podcastTitle = podcast.title, + podcastImageUrl = podcast.imageUrl, + isFollowed = isFollowed, + onToggleFollowClicked = { onTogglePodcastFollowed(podcast.uri) }, + modifier = Modifier.preferredWidth(128.dp) + ) - if (index < lastIndex) Spacer(Modifier.preferredWidth(24.dp)) - } - ) + if (index < lastIndex) Spacer(Modifier.preferredWidth(24.dp)) + } } } From 3278466f5635b254782f79d2fc517a2178e00496 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Wed, 16 Dec 2020 08:55:25 +0100 Subject: [PATCH 23/28] [Crane] Fix tests --- .../samples/crane/calendar/CalendarTest.kt | 16 ++++++++-------- .../samples/crane/details/DetailsActivityTest.kt | 5 ++++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt index efbc86fe61..54c317e7be 100644 --- a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt +++ b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.test.SemanticsMatcher import androidx.compose.ui.test.assertLabelEquals import androidx.compose.ui.test.junit4.ComposeTestRule import androidx.compose.ui.test.junit4.createAndroidComposeRule -import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.onNodeWithContentDescription import androidx.compose.ui.test.performClick import androidx.compose.ui.test.performScrollTo import dagger.hilt.android.testing.HiltAndroidRule @@ -69,16 +69,16 @@ class CalendarTest { @Test fun scrollsToTheBottom() { - composeTestRule.onNodeWithText("January 1").assertExists() - composeTestRule.onNodeWithText("December 31").performScrollTo().performClick() + composeTestRule.onNodeWithContentDescription("January 1").assertExists() + composeTestRule.onNodeWithContentDescription("December 31").performScrollTo().performClick() assert(datesRepository.datesSelected.toString() == "Dec 31") } @Test fun onDaySelected() { - composeTestRule.onNodeWithText("January 1").assertExists() - composeTestRule.onNodeWithText("January 2").assertExists().performClick() - composeTestRule.onNodeWithText("January 3").assertExists() + composeTestRule.onNodeWithContentDescription("January 1").assertExists() + composeTestRule.onNodeWithContentDescription("January 2").assertExists().performClick() + composeTestRule.onNodeWithContentDescription("January 3").assertExists() val datesNoSelected = composeTestRule.onDateNodes(NoSelected) datesNoSelected[0].assertLabelEquals("January 1") @@ -89,13 +89,13 @@ class CalendarTest { @Test fun twoDaysSelected() { - composeTestRule.onNodeWithText("January 2").assertExists().performClick() + composeTestRule.onNodeWithContentDescription("January 2").assertExists().performClick() val datesNoSelectedOneClick = composeTestRule.onDateNodes(NoSelected) datesNoSelectedOneClick[0].assertLabelEquals("January 1") datesNoSelectedOneClick[1].assertLabelEquals("January 3") - composeTestRule.onNodeWithText("January 4").assertExists().performClick() + composeTestRule.onNodeWithContentDescription("January 4").assertExists().performClick() composeTestRule.onDateNode(FirstDay).assertLabelEquals("January 2") composeTestRule.onDateNode(Selected).assertLabelEquals("January 3") diff --git a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/details/DetailsActivityTest.kt b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/details/DetailsActivityTest.kt index 0ad41add80..d91c364ee6 100644 --- a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/details/DetailsActivityTest.kt +++ b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/details/DetailsActivityTest.kt @@ -41,6 +41,8 @@ import org.junit.Rule import org.junit.Test import java.util.concurrent.CountDownLatch import javax.inject.Inject +import kotlin.math.pow +import kotlin.math.round @UninstallModules(DispatchersModule::class) @HiltAndroidTest @@ -118,4 +120,5 @@ class DetailsActivityTest { } } -private fun Double.round(decimals: Int = 2): Double = "%.${decimals}f".format(this).toDouble() +private fun Double.round(decimals: Int = 2): Double = + round(this * 10f.pow(decimals)) / 10f.pow(decimals) From c619d039cea03bd257fa2b0e5724b85451324663 Mon Sep 17 00:00:00 2001 From: Jose Alcerreca Date: Wed, 16 Dec 2020 09:57:07 +0100 Subject: [PATCH 24/28] [Jetchat] Test cleanup Change-Id: I9fefd3b8d95409fac8e60d65d2a7f2fe40c700bc --- .../java/com/example/compose/jetchat/ConversationTest.kt | 4 +++- .../java/com/example/compose/jetchat/UserInputTest.kt | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/ConversationTest.kt b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/ConversationTest.kt index 128e9e3d91..50d93fc805 100644 --- a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/ConversationTest.kt +++ b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/ConversationTest.kt @@ -164,5 +164,7 @@ class ConversationTest { composeTestRule.onNodeWithText(activity.getString(R.string.jumpBottom)) private fun openEmojiSelector() = - composeTestRule.onNodeWithContentDescription(activity.getString(R.string.emoji_selector_bt_desc)).performClick() + composeTestRule + .onNodeWithContentDescription(activity.getString(R.string.emoji_selector_bt_desc)) + .performClick() } diff --git a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt index 27f2dbec45..ce1c43ec14 100644 --- a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt +++ b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt @@ -111,7 +111,8 @@ class UserInputTest { // Click on text field to open the soft keyboard clickOnTextField() - // TODO: Soft keyboard is not correctly synchronized https://issuetracker.google.com/169235317 + // TODO: Soft keyboard is not correctly synchronized + // https://issuetracker.google.com/169235317 Thread.sleep(200) composeTestRule.onNode(SemanticsMatcher.expectValue(KeyboardShownKey, true)).assertExists() From 67229f1a53bb6048456c42ad29364a0cc471c956 Mon Sep 17 00:00:00 2001 From: Florina Muntenescu Date: Wed, 16 Dec 2020 09:31:34 +0000 Subject: [PATCH 25/28] [Jetsurvey] Updating to 7033025 snapshot --- .../compose/jetsurvey/signinsignup/SignInScreen.kt | 2 -- .../compose/jetsurvey/signinsignup/SignInSignUp.kt | 9 +++------ .../compose/jetsurvey/signinsignup/SignUpScreen.kt | 2 -- .../compose/jetsurvey/signinsignup/WelcomeScreen.kt | 3 ++- .../compose/jetsurvey/survey/SurveyQuestions.kt | 8 ++++---- .../example/compose/jetsurvey/survey/SurveyScreen.kt | 4 ++-- .../java/com/example/compose/jetsurvey/theme/Theme.kt | 4 ++-- .../example/compose/jetsurvey/buildsrc/dependencies.kt | 10 +++++----- Jetsurvey/gradle/wrapper/gradle-wrapper.properties | 2 +- 9 files changed, 19 insertions(+), 25 deletions(-) diff --git a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignInScreen.kt b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignInScreen.kt index 8985f0b446..d71c1f464d 100644 --- a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignInScreen.kt +++ b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignInScreen.kt @@ -38,7 +38,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.ExperimentalFocus import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focusRequester import androidx.compose.ui.res.stringResource @@ -112,7 +111,6 @@ fun SignIn(onNavigationEvent: (SignInEvent) -> Unit) { } } -@OptIn(ExperimentalFocus::class) @Composable fun SignInContent( onSignInSubmitted: (email: String, password: String) -> Unit, diff --git a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignInSignUp.kt b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignInSignUp.kt index 03293bd7a6..a344145b2b 100644 --- a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignInSignUp.kt +++ b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignInSignUp.kt @@ -49,9 +49,8 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.ExperimentalFocus import androidx.compose.ui.focus.FocusState -import androidx.compose.ui.focusObserver +import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.PasswordVisualTransformation @@ -106,7 +105,6 @@ fun SignInSignUpTopAppBar(topAppBarText: String, onBackPressed: () -> Unit) { ) } -@OptIn(ExperimentalFocus::class) @Composable fun Email( emailState: TextFieldState = remember { EmailState() }, @@ -126,7 +124,7 @@ fun Email( ) } }, - modifier = Modifier.fillMaxWidth().focusObserver { focusState -> + modifier = Modifier.fillMaxWidth().onFocusChanged { focusState -> val focused = focusState == FocusState.Active emailState.onFocusChange(focused) if (!focused) { @@ -147,7 +145,6 @@ fun Email( emailState.getError()?.let { error -> TextFieldError(textError = error) } } -@OptIn(ExperimentalFocus::class) @Composable fun Password( label: String, @@ -163,7 +160,7 @@ fun Password( passwordState.text = it passwordState.enableShowErrors() }, - modifier = modifier.fillMaxWidth().focusObserver { focusState -> + modifier = modifier.fillMaxWidth().onFocusChanged { focusState -> val focused = focusState == FocusState.Active passwordState.onFocusChange(focused) if (!focused) { diff --git a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignUpScreen.kt b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignUpScreen.kt index ed5084f5ab..8cd1bfdc1c 100644 --- a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignUpScreen.kt +++ b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/SignUpScreen.kt @@ -30,7 +30,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Providers import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.ExperimentalFocus import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focusRequester import androidx.compose.ui.res.stringResource @@ -73,7 +72,6 @@ fun SignUp(onNavigationEvent: (SignUpEvent) -> Unit) { ) } -@OptIn(ExperimentalFocus::class) @Composable fun SignUpContent( onSignUpSubmitted: (email: String, password: String) -> Unit, diff --git a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/WelcomeScreen.kt b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/WelcomeScreen.kt index dff0a99fd0..97dadf031a 100644 --- a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/WelcomeScreen.kt +++ b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/signinsignup/WelcomeScreen.kt @@ -69,11 +69,12 @@ fun WelcomeScreen(onEvent: (WelcomeEvent) -> Unit) { if (showBranding) 0f else -brandingBottom ) val heightDp = with(AmbientDensity.current) { heightWithBranding.toDp() } + val currentOffsetHolderDp = with(AmbientDensity.current) { currentOffsetHolder.value.toDp() } Surface(modifier = Modifier.fillMaxSize()) { Column( modifier = Modifier.fillMaxWidth() .brandingPreferredHeight(showBranding, heightDp) - .offset(y = { currentOffsetHolder.value }) + .offset(y = currentOffsetHolderDp) .onSizeChanged { if (showBranding) { heightWithBranding = it.height diff --git a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/survey/SurveyQuestions.kt b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/survey/SurveyQuestions.kt index e0bd03da39..5fec4ca469 100644 --- a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/survey/SurveyQuestions.kt +++ b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/survey/SurveyQuestions.kt @@ -37,13 +37,13 @@ import androidx.compose.foundation.selection.selectable import androidx.compose.material.AmbientContentAlpha import androidx.compose.material.Button import androidx.compose.material.Checkbox -import androidx.compose.material.CheckboxConstants +import androidx.compose.material.CheckboxDefaults import androidx.compose.material.ContentAlpha import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme import androidx.compose.material.OutlinedButton import androidx.compose.material.RadioButton -import androidx.compose.material.RadioButtonConstants +import androidx.compose.material.RadioButtonDefaults import androidx.compose.material.Slider import androidx.compose.material.Surface import androidx.compose.material.Text @@ -199,7 +199,7 @@ private fun SingleChoiceQuestion( RadioButton( selected = optionSelected, onClick = onClickHandle, - colors = RadioButtonConstants.defaultColors( + colors = RadioButtonDefaults.colors( selectedColor = MaterialTheme.colors.primary ) ) @@ -252,7 +252,7 @@ private fun MultipleChoiceQuestion( checkedState = selected onAnswerSelected(option.value, selected) }, - colors = CheckboxConstants.defaultColors( + colors = CheckboxDefaults.colors( checkedColor = MaterialTheme.colors.primary ), ) diff --git a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/survey/SurveyScreen.kt b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/survey/SurveyScreen.kt index d58c29b7bb..ceec7c70af 100644 --- a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/survey/SurveyScreen.kt +++ b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/survey/SurveyScreen.kt @@ -44,7 +44,7 @@ import androidx.compose.runtime.Providers import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.annotatedString +import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp @@ -155,7 +155,7 @@ private fun TopAppBarTitle( fontWeight = FontWeight.Bold ) val totalStyle = MaterialTheme.typography.caption.toSpanStyle() - val text = annotatedString { + val text = buildAnnotatedString { withStyle(style = indexStyle) { append("${questionIndex + 1}") } diff --git a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/theme/Theme.kt b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/theme/Theme.kt index f91c82fee4..2546ef3747 100644 --- a/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/theme/Theme.kt +++ b/Jetsurvey/app/src/main/java/com/example/compose/jetsurvey/theme/Theme.kt @@ -52,12 +52,12 @@ val DarkThemeColors = darkColors( onError = Color.Black ) -@Composable val Colors.snackbarAction: Color + @Composable get() = if (isLight) Purple300 else Purple700 -@Composable val Colors.progressIndicatorBackground: Color + @Composable get() = if (isLight) Color.Black.copy(alpha = 0.12f) else Color.Black.copy(alpha = 0.24f) @Composable diff --git a/Jetsurvey/buildSrc/src/main/java/com/example/compose/jetsurvey/buildsrc/dependencies.kt b/Jetsurvey/buildSrc/src/main/java/com/example/compose/jetsurvey/buildsrc/dependencies.kt index 9cbc0d01be..be80f1c603 100644 --- a/Jetsurvey/buildSrc/src/main/java/com/example/compose/jetsurvey/buildsrc/dependencies.kt +++ b/Jetsurvey/buildSrc/src/main/java/com/example/compose/jetsurvey/buildsrc/dependencies.kt @@ -21,7 +21,7 @@ object Versions { } object Libs { - const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha02" + const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha03" const val jdkDesugar = "com.android.tools:desugar_jdk_libs:1.0.9" const val junit = "junit:junit:4.13" @@ -29,12 +29,12 @@ object Libs { const val material = "com.google.android.material:material:1.1.0" object Accompanist { - private const val version = "0.4.0" + private const val version = "0.4.1.compose-7033025-SNAPSHOT" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" } object Kotlin { - private const val version = "1.4.20" + private const val version = "1.4.21" 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" @@ -52,8 +52,8 @@ object Libs { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha01" object Compose { - const val snapshot = "" - const val version = "1.0.0-alpha08" + const val snapshot = "7033025" + const val version = "1.0.0-SNAPSHOT" @get:JvmStatic val snapshotUrl: String diff --git a/Jetsurvey/gradle/wrapper/gradle-wrapper.properties b/Jetsurvey/gradle/wrapper/gradle-wrapper.properties index 3ddba0575a..f3b943a378 100644 --- a/Jetsurvey/gradle/wrapper/gradle-wrapper.properties +++ b/Jetsurvey/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-rc-1-bin.zip From 0ef7f4527e150226efc5cbd013f68840aed058a0 Mon Sep 17 00:00:00 2001 From: Jose Alcerreca Date: Wed, 16 Dec 2020 11:04:04 +0100 Subject: [PATCH 26/28] [Jetchat] Enables --android flag in ktlint Change-Id: I864ef534aef0d29c6b18badf0cd49bb6fdc97cc1 --- .../com/example/compose/jetchat/NavigationTest.kt | 4 +++- .../com/example/compose/jetchat/UserInputTest.kt | 12 ++++++++---- .../compose/jetchat/components/JetchatDrawer.kt | 4 +++- .../jetchat/conversation/ConversationUiState.kt | 7 ++++++- Jetchat/build.gradle | 3 +-- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/NavigationTest.kt b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/NavigationTest.kt index 576e61b3da..b1abc7fabd 100644 --- a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/NavigationTest.kt +++ b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/NavigationTest.kt @@ -94,7 +94,9 @@ class NavigationTest { // Check profile is displayed assertEquals(navController.currentDestination?.id, R.id.nav_profile) // Extra UI check - composeTestRule.onNodeWithText(activity.getString(R.string.textfield_hint)).assertIsDisplayed() + composeTestRule + .onNodeWithText(activity.getString(R.string.textfield_hint)) + .assertIsDisplayed() // Press back Espresso.pressBack() diff --git a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt index ce1c43ec14..509900e93d 100644 --- a/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt +++ b/Jetchat/app/src/androidTest/java/com/example/compose/jetchat/UserInputTest.kt @@ -138,19 +138,23 @@ class UserInputTest { } private fun clickOnTextField() = - composeTestRule.onNodeWithContentDescription(activity.getString(R.string.textfield_desc)) + composeTestRule + .onNodeWithContentDescription(activity.getString(R.string.textfield_desc)) .performClick() private fun openEmojiSelector() = - composeTestRule.onNodeWithContentDescription(activity.getString(R.string.emoji_selector_bt_desc)) + composeTestRule + .onNodeWithContentDescription(activity.getString(R.string.emoji_selector_bt_desc)) .performClick() private fun assertEmojiSelectorIsDisplayed() = - composeTestRule.onNodeWithContentDescription(activity.getString(R.string.emoji_selector_desc)) + composeTestRule + .onNodeWithContentDescription(activity.getString(R.string.emoji_selector_desc)) .assertIsDisplayed() private fun assertEmojiSelectorDoesNotExist() = - composeTestRule.onNodeWithContentDescription(activity.getString(R.string.emoji_selector_desc)) + composeTestRule + .onNodeWithContentDescription(activity.getString(R.string.emoji_selector_desc)) .assertDoesNotExist() private fun findSendButton() = composeTestRule.onNodeWithText(activity.getString(R.string.send)) diff --git a/Jetchat/app/src/main/java/com/example/compose/jetchat/components/JetchatDrawer.kt b/Jetchat/app/src/main/java/com/example/compose/jetchat/components/JetchatDrawer.kt index 7f5308a0c8..48ee88998d 100644 --- a/Jetchat/app/src/main/java/com/example/compose/jetchat/components/JetchatDrawer.kt +++ b/Jetchat/app/src/main/java/com/example/compose/jetchat/components/JetchatDrawer.kt @@ -66,7 +66,9 @@ fun ColumnScope.JetchatDrawer(onProfileClicked: (String) -> Unit, onChatClicked: ChatItem("droidcon-nyc", false) { onChatClicked("droidcon-nyc") } DrawerItemHeader("Recent Profiles") ProfileItem("Ali Conors (you)", meProfile.photo) { onProfileClicked(meProfile.userId) } - ProfileItem("Taylor Brooks", colleagueProfile.photo) { onProfileClicked(colleagueProfile.userId) } + ProfileItem("Taylor Brooks", colleagueProfile.photo) { + onProfileClicked(colleagueProfile.userId) + } } @Composable diff --git a/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/ConversationUiState.kt b/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/ConversationUiState.kt index 2d8b35782b..3d9baed149 100644 --- a/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/ConversationUiState.kt +++ b/Jetchat/app/src/main/java/com/example/compose/jetchat/conversation/ConversationUiState.kt @@ -34,4 +34,9 @@ class ConversationUiState( } @Immutable -data class Message(val author: String, val content: String, val timestamp: String, val image: Int? = null) +data class Message( + val author: String, + val content: String, + val timestamp: String, + val image: Int? = null +) diff --git a/Jetchat/build.gradle b/Jetchat/build.gradle index dfb7c9944e..4db919b9cd 100644 --- a/Jetchat/build.gradle +++ b/Jetchat/build.gradle @@ -53,8 +53,7 @@ subprojects { target '**/*.kt' targetExclude("$buildDir/**/*.kt") targetExclude('bin/**/*.kt') - - ktlint(Versions.ktlint) + ktlint(Versions.ktlint).userData([android: "true"]) licenseHeaderFile rootProject.file('spotless/copyright.kt') } } From 342a0b12e46648935e4739c8ff02d84018ffb72a Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Thu, 17 Dec 2020 08:02:52 +0100 Subject: [PATCH 27/28] [All] Update to alpha09 --- .../main/java/com/example/crane/buildsrc/Dependencies.kt | 6 +++--- JetNews/build.gradle | 4 ++-- .../java/com/example/jetcaster/buildsrc/dependencies.kt | 6 +++--- .../com/example/compose/jetchat/buildsrc/dependencies.kt | 6 +++--- .../java/com/example/jetsnack/buildsrc/Dependencies.kt | 6 +++--- .../example/compose/jetsurvey/buildsrc/dependencies.kt | 6 +++--- .../main/java/com/example/owl/buildsrc/Dependencies.kt | 8 ++++---- .../com/example/compose/rally/buildsrc/dependencies.kt | 4 ++-- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt index 6639536e7f..5c91a3a146 100644 --- a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt +++ b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt @@ -30,7 +30,7 @@ object Libs { } object Accompanist { - private const val version = "0.4.1.compose-7033025-SNAPSHOT" + private const val version = "0.4.1" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" } @@ -49,8 +49,8 @@ object Libs { object AndroidX { object Compose { - const val snapshot = "7033025" - private const val version = "1.0.0-SNAPSHOT" + const val snapshot = "" + private const val version = "1.0.0-alpha09" const val runtime = "androidx.compose.runtime:runtime:$version" const val runtimeLivedata = "androidx.compose.runtime:runtime-livedata:$version" diff --git a/JetNews/build.gradle b/JetNews/build.gradle index 7ec8539e59..dcef3979b8 100644 --- a/JetNews/build.gradle +++ b/JetNews/build.gradle @@ -16,7 +16,7 @@ buildscript { ext.kotlin_version = '1.4.21' - ext.compose_version = '1.0.0-SNAPSHOT' + ext.compose_version = '1.0.0-alpha09' ext.coroutines_version = '1.4.2' repositories { @@ -37,7 +37,7 @@ plugins { subprojects { repositories { maven { - def snapshot = "7033025" + def snapshot = "" url "https://androidx.dev/snapshots/builds/$snapshot/artifacts/repository/" } google() 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 a32f0fefdb..15b4140fa0 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 @@ -29,7 +29,7 @@ object Libs { const val material = "com.google.android.material:material:1.1.0" object Accompanist { - private const val version = "0.4.1.compose-7033025-SNAPSHOT" + private const val version = "0.4.1" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" const val insets = "dev.chrisbanes.accompanist:accompanist-insets:$version" } @@ -62,8 +62,8 @@ object Libs { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha04" object Compose { - private const val snapshot = "7033025" - private const val version = "1.0.0-SNAPSHOT" + private const val snapshot = "" + private const val version = "1.0.0-alpha09" @get:JvmStatic val snapshotUrl: String diff --git a/Jetchat/buildSrc/src/main/java/com/example/compose/jetchat/buildsrc/dependencies.kt b/Jetchat/buildSrc/src/main/java/com/example/compose/jetchat/buildsrc/dependencies.kt index b78674f18b..e77e3c1565 100644 --- a/Jetchat/buildSrc/src/main/java/com/example/compose/jetchat/buildsrc/dependencies.kt +++ b/Jetchat/buildSrc/src/main/java/com/example/compose/jetchat/buildsrc/dependencies.kt @@ -43,7 +43,7 @@ object Libs { } object Accompanist { - private const val version = "0.4.1.compose-7033025-SNAPSHOT" + private const val version = "0.4.1" const val insets = "dev.chrisbanes.accompanist:accompanist-insets:$version" } @@ -52,8 +52,8 @@ object Libs { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha04" object Compose { - const val snapshot = "7033025" - const val version = "1.0.0-SNAPSHOT" + const val snapshot = "" + const val version = "1.0.0-alpha09" const val foundation = "androidx.compose.foundation:foundation:$version" const val layout = "androidx.compose.foundation:foundation-layout:$version" diff --git a/Jetsnack/buildSrc/src/main/java/com/example/jetsnack/buildsrc/Dependencies.kt b/Jetsnack/buildSrc/src/main/java/com/example/jetsnack/buildsrc/Dependencies.kt index ae83eaeaa1..1eed138f00 100644 --- a/Jetsnack/buildSrc/src/main/java/com/example/jetsnack/buildsrc/Dependencies.kt +++ b/Jetsnack/buildSrc/src/main/java/com/example/jetsnack/buildsrc/Dependencies.kt @@ -25,7 +25,7 @@ object Libs { const val junit = "junit:junit:4.13" object Accompanist { - private const val version = "0.4.1.compose-7033025-SNAPSHOT" + private const val version = "0.4.1" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" const val insets = "dev.chrisbanes.accompanist:accompanist-insets:$version" } @@ -48,8 +48,8 @@ object Libs { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha05" object Compose { - const val snapshot = "7033025" - const val version = "1.0.0-SNAPSHOT" + const val snapshot = "" + const val version = "1.0.0-alpha09" const val foundation = "androidx.compose.foundation:foundation:${version}" const val layout = "androidx.compose.foundation:foundation-layout:${version}" diff --git a/Jetsurvey/buildSrc/src/main/java/com/example/compose/jetsurvey/buildsrc/dependencies.kt b/Jetsurvey/buildSrc/src/main/java/com/example/compose/jetsurvey/buildsrc/dependencies.kt index be80f1c603..8241620c40 100644 --- a/Jetsurvey/buildSrc/src/main/java/com/example/compose/jetsurvey/buildsrc/dependencies.kt +++ b/Jetsurvey/buildSrc/src/main/java/com/example/compose/jetsurvey/buildsrc/dependencies.kt @@ -29,7 +29,7 @@ object Libs { const val material = "com.google.android.material:material:1.1.0" object Accompanist { - private const val version = "0.4.1.compose-7033025-SNAPSHOT" + private const val version = "0.4.1" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" } @@ -52,8 +52,8 @@ object Libs { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha01" object Compose { - const val snapshot = "7033025" - const val version = "1.0.0-SNAPSHOT" + const val snapshot = "" + const val version = "1.0.0-alpha09" @get:JvmStatic val snapshotUrl: String diff --git a/Owl/buildSrc/src/main/java/com/example/owl/buildsrc/Dependencies.kt b/Owl/buildSrc/src/main/java/com/example/owl/buildsrc/Dependencies.kt index e5d2bfc3f4..9e66cf195d 100644 --- a/Owl/buildSrc/src/main/java/com/example/owl/buildsrc/Dependencies.kt +++ b/Owl/buildSrc/src/main/java/com/example/owl/buildsrc/Dependencies.kt @@ -25,7 +25,7 @@ object Libs { const val junit = "junit:junit:4.13" object Accompanist { - private const val version = "0.4.1.compose-7033025-SNAPSHOT" + private const val version = "0.4.1" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" const val insets = "dev.chrisbanes.accompanist:accompanist-insets:$version" } @@ -46,11 +46,11 @@ object Libs { object AndroidX { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha05" - const val navigation = "androidx.navigation:navigation-compose:1.0.0-SNAPSHOT" + const val navigation = "androidx.navigation:navigation-compose:1.0.0-alpha04" object Compose { - const val snapshot = "7033025" - const val version = "1.0.0-SNAPSHOT" + const val snapshot = "" + const val version = "1.0.0-alpha09" const val animation = "androidx.compose.animation:animation:$version" const val foundation = "androidx.compose.foundation:foundation:$version" diff --git a/Rally/buildSrc/src/main/java/com/example/compose/rally/buildsrc/dependencies.kt b/Rally/buildSrc/src/main/java/com/example/compose/rally/buildsrc/dependencies.kt index 80a46f491c..c3f2c53bee 100644 --- a/Rally/buildSrc/src/main/java/com/example/compose/rally/buildsrc/dependencies.kt +++ b/Rally/buildSrc/src/main/java/com/example/compose/rally/buildsrc/dependencies.kt @@ -47,8 +47,8 @@ object Libs { const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha02" object Compose { - const val snapshot = "7033025" - const val version = "1.0.0-SNAPSHOT" + const val snapshot = "" + const val version = "1.0.0-alpha09" const val core = "androidx.compose.ui:ui:$version" const val foundation = "androidx.compose.foundation:foundation:$version" From 96c0c6f59926f2d18d64fcc76b524c3c394c3a30 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Thu, 17 Dec 2020 12:30:55 +0100 Subject: [PATCH 28/28] [All] Remove maven reference --- JetNews/build.gradle | 4 ---- 1 file changed, 4 deletions(-) diff --git a/JetNews/build.gradle b/JetNews/build.gradle index dcef3979b8..234ed0ab6d 100644 --- a/JetNews/build.gradle +++ b/JetNews/build.gradle @@ -36,10 +36,6 @@ plugins { subprojects { repositories { - maven { - def snapshot = "" - url "https://androidx.dev/snapshots/builds/$snapshot/artifacts/repository/" - } google() jcenter() }