diff --git a/JetLagged/buildscripts/toml-updater-config.gradle b/JetLagged/buildscripts/toml-updater-config.gradle index 2934311c61..801c23d3e2 100644 --- a/JetLagged/buildscripts/toml-updater-config.gradle +++ b/JetLagged/buildscripts/toml-updater-config.gradle @@ -19,10 +19,6 @@ versionCatalogUpdate { keep { // keep versions without any library or plugin reference keepUnusedVersions.set(true) - // keep all libraries that aren't used in the project - keepUnusedLibraries.set(true) - // keep all plugins that aren't used in the project - keepUnusedPlugins.set(true) } } diff --git a/JetLagged/gradle/libs.versions.toml b/JetLagged/gradle/libs.versions.toml index 1cd5b96b62..29943df2e6 100644 --- a/JetLagged/gradle/libs.versions.toml +++ b/JetLagged/gradle/libs.versions.toml @@ -3,19 +3,20 @@ # Do not add a dependency to an individual sample, edit the global version instead. ##### [versions] -accompanist = "0.37.0" -androidGradlePlugin = "8.8.1" -androidx-activity-compose = "1.10.0" +accompanist = "0.37.2" +android-material3 = "1.13.0-alpha13" +androidGradlePlugin = "8.9.2" +androidx-activity-compose = "1.10.1" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2025.02.00" +androidx-compose-bom = "2025.04.01" androidx-constraintlayout = "1.1.0" androidx-core-splashscreen = "1.0.1" -androidx-corektx = "1.15.0" +androidx-corektx = "1.16.0" androidx-glance = "1.1.1" androidx-lifecycle = "2.8.2" androidx-lifecycle-compose = "2.8.7" androidx-lifecycle-runtime-compose = "2.8.7" -androidx-navigation = "2.8.7" +androidx-navigation = "2.8.9" androidx-palette = "1.0.0" androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" @@ -30,37 +31,37 @@ androix-test-uiautomator = "2.3.0" coil = "2.7.0" # @keep compileSdk = "35" -coroutines = "1.10.1" +coroutines = "1.10.2" google-maps = "18.2.0" gradle-versions = "0.52.0" -hilt = "2.55" +hilt = "2.56.2" hiltExt = "1.2.0" -horologist = "0.6.22" -# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions -jdkDesugar = "1.2.2" +horologist = "0.6.23" +jdkDesugar = "2.1.5" junit = "4.13.2" -kotlin = "2.1.10" +kotlin = "2.1.20" kotlinx-serialization-json = "1.7.3" kotlinx_immutable = "0.3.8" -ksp = "2.1.10-1.0.30" +ksp = "2.1.20-2.0.0" maps-compose = "3.1.1" # @keep minSdk = "21" okhttp = "4.12.0" play-services-wearable = "18.1.0" robolectric = "4.14.1" -roborazzi = "1.42.0" +roborazzi = "1.43.1" rome = "2.1.0" -room = "2.6.1" +room = "2.7.1" secrets = "2.0.1" spotless = "7.0.3" # @keep targetSdk = "33" -version-catalog-update = "0.8.5" +version-catalog-update = "1.0.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } +android-material3 = { module = "com.google.android.material:material", version.ref = "android-material3" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } diff --git a/JetLagged/gradle/wrapper/gradle-wrapper.properties b/JetLagged/gradle/wrapper/gradle-wrapper.properties index ba11905c1d..d6c8bc7bf8 100644 --- a/JetLagged/gradle/wrapper/gradle-wrapper.properties +++ b/JetLagged/gradle/wrapper/gradle-wrapper.properties @@ -14,6 +14,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/JetNews/buildscripts/toml-updater-config.gradle b/JetNews/buildscripts/toml-updater-config.gradle index 2934311c61..801c23d3e2 100644 --- a/JetNews/buildscripts/toml-updater-config.gradle +++ b/JetNews/buildscripts/toml-updater-config.gradle @@ -19,10 +19,6 @@ versionCatalogUpdate { keep { // keep versions without any library or plugin reference keepUnusedVersions.set(true) - // keep all libraries that aren't used in the project - keepUnusedLibraries.set(true) - // keep all plugins that aren't used in the project - keepUnusedPlugins.set(true) } } diff --git a/JetNews/gradle/libs.versions.toml b/JetNews/gradle/libs.versions.toml index 1cd5b96b62..29943df2e6 100644 --- a/JetNews/gradle/libs.versions.toml +++ b/JetNews/gradle/libs.versions.toml @@ -3,19 +3,20 @@ # Do not add a dependency to an individual sample, edit the global version instead. ##### [versions] -accompanist = "0.37.0" -androidGradlePlugin = "8.8.1" -androidx-activity-compose = "1.10.0" +accompanist = "0.37.2" +android-material3 = "1.13.0-alpha13" +androidGradlePlugin = "8.9.2" +androidx-activity-compose = "1.10.1" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2025.02.00" +androidx-compose-bom = "2025.04.01" androidx-constraintlayout = "1.1.0" androidx-core-splashscreen = "1.0.1" -androidx-corektx = "1.15.0" +androidx-corektx = "1.16.0" androidx-glance = "1.1.1" androidx-lifecycle = "2.8.2" androidx-lifecycle-compose = "2.8.7" androidx-lifecycle-runtime-compose = "2.8.7" -androidx-navigation = "2.8.7" +androidx-navigation = "2.8.9" androidx-palette = "1.0.0" androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" @@ -30,37 +31,37 @@ androix-test-uiautomator = "2.3.0" coil = "2.7.0" # @keep compileSdk = "35" -coroutines = "1.10.1" +coroutines = "1.10.2" google-maps = "18.2.0" gradle-versions = "0.52.0" -hilt = "2.55" +hilt = "2.56.2" hiltExt = "1.2.0" -horologist = "0.6.22" -# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions -jdkDesugar = "1.2.2" +horologist = "0.6.23" +jdkDesugar = "2.1.5" junit = "4.13.2" -kotlin = "2.1.10" +kotlin = "2.1.20" kotlinx-serialization-json = "1.7.3" kotlinx_immutable = "0.3.8" -ksp = "2.1.10-1.0.30" +ksp = "2.1.20-2.0.0" maps-compose = "3.1.1" # @keep minSdk = "21" okhttp = "4.12.0" play-services-wearable = "18.1.0" robolectric = "4.14.1" -roborazzi = "1.42.0" +roborazzi = "1.43.1" rome = "2.1.0" -room = "2.6.1" +room = "2.7.1" secrets = "2.0.1" spotless = "7.0.3" # @keep targetSdk = "33" -version-catalog-update = "0.8.5" +version-catalog-update = "1.0.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } +android-material3 = { module = "com.google.android.material:material", version.ref = "android-material3" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } diff --git a/JetNews/gradle/wrapper/gradle-wrapper.properties b/JetNews/gradle/wrapper/gradle-wrapper.properties index ba11905c1d..d6c8bc7bf8 100644 --- a/JetNews/gradle/wrapper/gradle-wrapper.properties +++ b/JetNews/gradle/wrapper/gradle-wrapper.properties @@ -14,6 +14,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/Jetcaster/buildscripts/toml-updater-config.gradle b/Jetcaster/buildscripts/toml-updater-config.gradle index 2934311c61..801c23d3e2 100644 --- a/Jetcaster/buildscripts/toml-updater-config.gradle +++ b/Jetcaster/buildscripts/toml-updater-config.gradle @@ -19,10 +19,6 @@ versionCatalogUpdate { keep { // keep versions without any library or plugin reference keepUnusedVersions.set(true) - // keep all libraries that aren't used in the project - keepUnusedLibraries.set(true) - // keep all plugins that aren't used in the project - keepUnusedPlugins.set(true) } } diff --git a/Jetcaster/gradle/libs.versions.toml b/Jetcaster/gradle/libs.versions.toml index 3cffd54753..29943df2e6 100644 --- a/Jetcaster/gradle/libs.versions.toml +++ b/Jetcaster/gradle/libs.versions.toml @@ -3,20 +3,20 @@ # Do not add a dependency to an individual sample, edit the global version instead. ##### [versions] -accompanist = "0.37.0" -androidGradlePlugin = "8.8.1" -androidx-activity-compose = "1.10.0" +accompanist = "0.37.2" +android-material3 = "1.13.0-alpha13" +androidGradlePlugin = "8.9.2" +androidx-activity-compose = "1.10.1" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2025.02.00" +androidx-compose-bom = "2025.04.01" androidx-constraintlayout = "1.1.0" androidx-core-splashscreen = "1.0.1" -androidx-corektx = "1.15.0" +androidx-corektx = "1.16.0" androidx-glance = "1.1.1" androidx-lifecycle = "2.8.2" androidx-lifecycle-compose = "2.8.7" androidx-lifecycle-runtime-compose = "2.8.7" -android-material3 = "1.13.0-alpha11" -androidx-navigation = "2.8.7" +androidx-navigation = "2.8.9" androidx-palette = "1.0.0" androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" @@ -31,37 +31,37 @@ androix-test-uiautomator = "2.3.0" coil = "2.7.0" # @keep compileSdk = "35" -coroutines = "1.10.1" +coroutines = "1.10.2" google-maps = "18.2.0" gradle-versions = "0.52.0" -hilt = "2.55" +hilt = "2.56.2" hiltExt = "1.2.0" -horologist = "0.6.22" -# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions -jdkDesugar = "1.2.2" +horologist = "0.6.23" +jdkDesugar = "2.1.5" junit = "4.13.2" -kotlin = "2.1.10" +kotlin = "2.1.20" kotlinx-serialization-json = "1.7.3" kotlinx_immutable = "0.3.8" -ksp = "2.1.10-1.0.30" +ksp = "2.1.20-2.0.0" maps-compose = "3.1.1" # @keep minSdk = "21" okhttp = "4.12.0" play-services-wearable = "18.1.0" robolectric = "4.14.1" -roborazzi = "1.42.0" +roborazzi = "1.43.1" rome = "2.1.0" -room = "2.6.1" +room = "2.7.1" secrets = "2.0.1" spotless = "7.0.3" # @keep targetSdk = "33" -version-catalog-update = "0.8.5" +version-catalog-update = "1.0.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } +android-material3 = { module = "com.google.android.material:material", version.ref = "android-material3" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } @@ -149,7 +149,6 @@ kotlinx-collections-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collec kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization-json" } -android-material3 = { group = "com.google.android.material", name = "material", version.ref = "android-material3" } okhttp-logging = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" } okhttp3 = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } play-services-wearable = { module = "com.google.android.gms:play-services-wearable", version.ref = "play-services-wearable" } diff --git a/Jetcaster/gradle/wrapper/gradle-wrapper.properties b/Jetcaster/gradle/wrapper/gradle-wrapper.properties index ba11905c1d..d6c8bc7bf8 100644 --- a/Jetcaster/gradle/wrapper/gradle-wrapper.properties +++ b/Jetcaster/gradle/wrapper/gradle-wrapper.properties @@ -14,6 +14,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/Jetcaster/mobile/src/main/java/com/example/jetcaster/ui/home/Home.kt b/Jetcaster/mobile/src/main/java/com/example/jetcaster/ui/home/Home.kt index a3230edfe9..fe597ccc48 100644 --- a/Jetcaster/mobile/src/main/java/com/example/jetcaster/ui/home/Home.kt +++ b/Jetcaster/mobile/src/main/java/com/example/jetcaster/ui/home/Home.kt @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Android Open Source Project + * Copyright 2020-2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -131,9 +131,8 @@ import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3AdaptiveApi::class) -private fun ThreePaneScaffoldNavigator.isMainPaneHidden(): Boolean { - return scaffoldValue[SupportingPaneScaffoldRole.Main] == PaneAdaptedValue.Hidden -} +private fun ThreePaneScaffoldNavigator.isMainPaneHidden(): Boolean = + scaffoldValue[SupportingPaneScaffoldRole.Main] == PaneAdaptedValue.Hidden /** * Copied from `calculatePaneScaffoldDirective()` in [PaneScaffoldDirective], with modifications to @@ -142,7 +141,7 @@ private fun ThreePaneScaffoldNavigator.isMainPaneHidden(): Boolean { @OptIn(ExperimentalMaterial3AdaptiveApi::class) fun calculateScaffoldDirective( windowAdaptiveInfo: WindowAdaptiveInfo, - verticalHingePolicy: HingePolicy = HingePolicy.AvoidSeparating + verticalHingePolicy: HingePolicy = HingePolicy.AvoidSeparating, ): PaneScaffoldDirective { val maxHorizontalPartitions: Int val verticalSpacerSize: Dp @@ -195,20 +194,19 @@ fun calculateScaffoldDirective( * Copied from `getExcludedVerticalBounds()` in [PaneScaffoldDirective] since it is private. */ @OptIn(ExperimentalMaterial3AdaptiveApi::class) -private fun getExcludedVerticalBounds(posture: Posture, hingePolicy: HingePolicy): List { - return when (hingePolicy) { +private fun getExcludedVerticalBounds(posture: Posture, hingePolicy: HingePolicy): List = + when (hingePolicy) { HingePolicy.AvoidSeparating -> posture.separatingVerticalHingeBounds HingePolicy.AvoidOccluding -> posture.occludingVerticalHingeBounds HingePolicy.AlwaysAvoid -> posture.allVerticalHingeBounds else -> emptyList() } -} @Composable fun MainScreen( windowSizeClass: WindowSizeClass, navigateToPlayer: (EpisodeInfo) -> Unit, - viewModel: HomeViewModel = hiltViewModel() + viewModel: HomeViewModel = hiltViewModel(), ) { val homeScreenUiState by viewModel.state.collectAsStateWithLifecycle() val uiState = homeScreenUiState @@ -217,7 +215,7 @@ fun MainScreen( uiState = uiState, windowSizeClass = windowSizeClass, navigateToPlayer = navigateToPlayer, - viewModel = viewModel, + viewModel = viewModel ) if (uiState.errorMessage != null) { @@ -232,7 +230,7 @@ private fun HomeScreenError(onRetry: () -> Unit, modifier: Modifier = Modifier) Column( verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier.fillMaxSize(), + modifier = Modifier.fillMaxSize() ) { Text( text = stringResource(id = R.string.an_error_has_occurred), @@ -259,13 +257,16 @@ private fun HomeScreenReady( uiState: HomeScreenUiState, windowSizeClass: WindowSizeClass, navigateToPlayer: (EpisodeInfo) -> Unit, - viewModel: HomeViewModel = hiltViewModel() + viewModel: HomeViewModel = hiltViewModel(), ) { val navigator = rememberSupportingPaneScaffoldNavigator( scaffoldDirective = calculateScaffoldDirective(currentWindowAdaptiveInfo()) ) + + val scope = rememberCoroutineScope() + BackHandler(enabled = navigator.canNavigateBack()) { - navigator.navigateBack() + scope.launch { navigator.navigateBack() } } Surface { @@ -284,14 +285,16 @@ private fun HomeScreenReady( library = uiState.library, onHomeAction = viewModel::onHomeAction, navigateToPodcastDetails = { - navigator.navigateTo(SupportingPaneScaffoldRole.Supporting, it.uri) + scope.launch { + navigator.navigateTo(SupportingPaneScaffoldRole.Supporting, it.uri) + } }, navigateToPlayer = navigateToPlayer, modifier = Modifier.fillMaxSize() ) }, supportingPane = { - val podcastUri = navigator.currentDestination?.content + val podcastUri = navigator.currentDestination?.contentKey if (!podcastUri.isNullOrEmpty()) { val podcastDetailsViewModel = hiltViewModel( @@ -304,10 +307,12 @@ private fun HomeScreenReady( navigateToPlayer = navigateToPlayer, navigateBack = { if (navigator.canNavigateBack()) { - navigator.navigateBack() + scope.launch { + navigator.navigateBack() + } } }, - showBackButton = navigator.isMainPaneHidden(), + showBackButton = navigator.isMainPaneHidden() ) } }, @@ -318,10 +323,7 @@ private fun HomeScreenReady( @OptIn(ExperimentalMaterial3Api::class) @Composable -private fun HomeAppBar( - isExpanded: Boolean, - modifier: Modifier = Modifier, -) { +private fun HomeAppBar(isExpanded: Boolean, modifier: Modifier = Modifier) { var queryText by remember { mutableStateOf("") } @@ -369,7 +371,7 @@ private fun HomeAppBar( @Composable private fun HomeScreenBackground( modifier: Modifier = Modifier, - content: @Composable BoxScope.() -> Unit + content: @Composable BoxScope.() -> Unit, ) { Box( modifier = modifier @@ -397,7 +399,7 @@ private fun HomeScreen( onHomeAction: (HomeAction) -> Unit, navigateToPodcastDetails: (PodcastInfo) -> Unit, navigateToPlayer: (EpisodeInfo) -> Unit, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, ) { // Effect that changes the home category selection when there are no subscribed podcasts LaunchedEffect(key1 = featuredPodcasts) { @@ -416,7 +418,7 @@ private fun HomeScreen( Column { HomeAppBar( isExpanded = windowSizeClass.isCompact, - modifier = Modifier.fillMaxWidth(), + modifier = Modifier.fillMaxWidth() ) if (isLoading) { LinearProgressIndicator( @@ -453,7 +455,7 @@ private fun HomeScreen( onHomeAction(action) }, navigateToPodcastDetails = navigateToPodcastDetails, - navigateToPlayer = navigateToPlayer, + navigateToPlayer = navigateToPlayer ) } } @@ -494,7 +496,7 @@ private fun HomeContent( modifier = modifier, onHomeAction = onHomeAction, navigateToPodcastDetails = navigateToPodcastDetails, - navigateToPlayer = navigateToPlayer, + navigateToPlayer = navigateToPlayer ) } @@ -563,7 +565,7 @@ private fun HomeContentGrid( onTogglePodcastFollowed = { onHomeAction(HomeAction.TogglePodcastFollowed(it)) }, - onQueueEpisode = { onHomeAction(HomeAction.QueueEpisode(it)) }, + onQueueEpisode = { onHomeAction(HomeAction.QueueEpisode(it)) } ) } } @@ -644,7 +646,7 @@ private fun HomeCategoryTabs( @Composable private fun HomeCategoryTabIndicator( modifier: Modifier = Modifier, - color: Color = MaterialTheme.colorScheme.onSurface + color: Color = MaterialTheme.colorScheme.onSurface, ) { Spacer( modifier @@ -677,7 +679,7 @@ private fun FollowedPodcasts( state = pagerState, contentPadding = PaddingValues( horizontal = horizontalPadding, - vertical = 16.dp, + vertical = 16.dp ), pageSpacing = 24.dp, pageSize = PageSize.Fixed(FEATURED_PODCAST_IMAGE_SIZE_DP) @@ -717,7 +719,7 @@ private fun FollowedPodcastCarouselItem( contentDescription = podcastTitle, modifier = Modifier .fillMaxSize() - .clip(MaterialTheme.shapes.medium), + .clip(MaterialTheme.shapes.medium) ) ToggleFollowPodcastIconButton( @@ -764,7 +766,7 @@ private fun lastUpdated(updated: OffsetDateTime): String { private fun HomeAppBarPreview() { JetcasterTheme { HomeAppBar( - isExpanded = false, + isExpanded = false ) } } @@ -792,7 +794,7 @@ private fun PreviewHome() { library = LibraryInfo(), onHomeAction = {}, navigateToPodcastDetails = {}, - navigateToPlayer = {}, + navigateToPlayer = {} ) } } diff --git a/Jetchat/buildscripts/toml-updater-config.gradle b/Jetchat/buildscripts/toml-updater-config.gradle index 2934311c61..801c23d3e2 100644 --- a/Jetchat/buildscripts/toml-updater-config.gradle +++ b/Jetchat/buildscripts/toml-updater-config.gradle @@ -19,10 +19,6 @@ versionCatalogUpdate { keep { // keep versions without any library or plugin reference keepUnusedVersions.set(true) - // keep all libraries that aren't used in the project - keepUnusedLibraries.set(true) - // keep all plugins that aren't used in the project - keepUnusedPlugins.set(true) } } diff --git a/Jetchat/gradle/libs.versions.toml b/Jetchat/gradle/libs.versions.toml index 1cd5b96b62..29943df2e6 100644 --- a/Jetchat/gradle/libs.versions.toml +++ b/Jetchat/gradle/libs.versions.toml @@ -3,19 +3,20 @@ # Do not add a dependency to an individual sample, edit the global version instead. ##### [versions] -accompanist = "0.37.0" -androidGradlePlugin = "8.8.1" -androidx-activity-compose = "1.10.0" +accompanist = "0.37.2" +android-material3 = "1.13.0-alpha13" +androidGradlePlugin = "8.9.2" +androidx-activity-compose = "1.10.1" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2025.02.00" +androidx-compose-bom = "2025.04.01" androidx-constraintlayout = "1.1.0" androidx-core-splashscreen = "1.0.1" -androidx-corektx = "1.15.0" +androidx-corektx = "1.16.0" androidx-glance = "1.1.1" androidx-lifecycle = "2.8.2" androidx-lifecycle-compose = "2.8.7" androidx-lifecycle-runtime-compose = "2.8.7" -androidx-navigation = "2.8.7" +androidx-navigation = "2.8.9" androidx-palette = "1.0.0" androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" @@ -30,37 +31,37 @@ androix-test-uiautomator = "2.3.0" coil = "2.7.0" # @keep compileSdk = "35" -coroutines = "1.10.1" +coroutines = "1.10.2" google-maps = "18.2.0" gradle-versions = "0.52.0" -hilt = "2.55" +hilt = "2.56.2" hiltExt = "1.2.0" -horologist = "0.6.22" -# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions -jdkDesugar = "1.2.2" +horologist = "0.6.23" +jdkDesugar = "2.1.5" junit = "4.13.2" -kotlin = "2.1.10" +kotlin = "2.1.20" kotlinx-serialization-json = "1.7.3" kotlinx_immutable = "0.3.8" -ksp = "2.1.10-1.0.30" +ksp = "2.1.20-2.0.0" maps-compose = "3.1.1" # @keep minSdk = "21" okhttp = "4.12.0" play-services-wearable = "18.1.0" robolectric = "4.14.1" -roborazzi = "1.42.0" +roborazzi = "1.43.1" rome = "2.1.0" -room = "2.6.1" +room = "2.7.1" secrets = "2.0.1" spotless = "7.0.3" # @keep targetSdk = "33" -version-catalog-update = "0.8.5" +version-catalog-update = "1.0.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } +android-material3 = { module = "com.google.android.material:material", version.ref = "android-material3" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } diff --git a/Jetchat/gradle/wrapper/gradle-wrapper.properties b/Jetchat/gradle/wrapper/gradle-wrapper.properties index ba11905c1d..d6c8bc7bf8 100644 --- a/Jetchat/gradle/wrapper/gradle-wrapper.properties +++ b/Jetchat/gradle/wrapper/gradle-wrapper.properties @@ -14,6 +14,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/Jetsnack/buildscripts/toml-updater-config.gradle b/Jetsnack/buildscripts/toml-updater-config.gradle index 2934311c61..801c23d3e2 100644 --- a/Jetsnack/buildscripts/toml-updater-config.gradle +++ b/Jetsnack/buildscripts/toml-updater-config.gradle @@ -19,10 +19,6 @@ versionCatalogUpdate { keep { // keep versions without any library or plugin reference keepUnusedVersions.set(true) - // keep all libraries that aren't used in the project - keepUnusedLibraries.set(true) - // keep all plugins that aren't used in the project - keepUnusedPlugins.set(true) } } diff --git a/Jetsnack/gradle/libs.versions.toml b/Jetsnack/gradle/libs.versions.toml index 1cd5b96b62..29943df2e6 100644 --- a/Jetsnack/gradle/libs.versions.toml +++ b/Jetsnack/gradle/libs.versions.toml @@ -3,19 +3,20 @@ # Do not add a dependency to an individual sample, edit the global version instead. ##### [versions] -accompanist = "0.37.0" -androidGradlePlugin = "8.8.1" -androidx-activity-compose = "1.10.0" +accompanist = "0.37.2" +android-material3 = "1.13.0-alpha13" +androidGradlePlugin = "8.9.2" +androidx-activity-compose = "1.10.1" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2025.02.00" +androidx-compose-bom = "2025.04.01" androidx-constraintlayout = "1.1.0" androidx-core-splashscreen = "1.0.1" -androidx-corektx = "1.15.0" +androidx-corektx = "1.16.0" androidx-glance = "1.1.1" androidx-lifecycle = "2.8.2" androidx-lifecycle-compose = "2.8.7" androidx-lifecycle-runtime-compose = "2.8.7" -androidx-navigation = "2.8.7" +androidx-navigation = "2.8.9" androidx-palette = "1.0.0" androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" @@ -30,37 +31,37 @@ androix-test-uiautomator = "2.3.0" coil = "2.7.0" # @keep compileSdk = "35" -coroutines = "1.10.1" +coroutines = "1.10.2" google-maps = "18.2.0" gradle-versions = "0.52.0" -hilt = "2.55" +hilt = "2.56.2" hiltExt = "1.2.0" -horologist = "0.6.22" -# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions -jdkDesugar = "1.2.2" +horologist = "0.6.23" +jdkDesugar = "2.1.5" junit = "4.13.2" -kotlin = "2.1.10" +kotlin = "2.1.20" kotlinx-serialization-json = "1.7.3" kotlinx_immutable = "0.3.8" -ksp = "2.1.10-1.0.30" +ksp = "2.1.20-2.0.0" maps-compose = "3.1.1" # @keep minSdk = "21" okhttp = "4.12.0" play-services-wearable = "18.1.0" robolectric = "4.14.1" -roborazzi = "1.42.0" +roborazzi = "1.43.1" rome = "2.1.0" -room = "2.6.1" +room = "2.7.1" secrets = "2.0.1" spotless = "7.0.3" # @keep targetSdk = "33" -version-catalog-update = "0.8.5" +version-catalog-update = "1.0.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } +android-material3 = { module = "com.google.android.material:material", version.ref = "android-material3" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } diff --git a/Jetsnack/gradle/wrapper/gradle-wrapper.properties b/Jetsnack/gradle/wrapper/gradle-wrapper.properties index ba11905c1d..d6c8bc7bf8 100644 --- a/Jetsnack/gradle/wrapper/gradle-wrapper.properties +++ b/Jetsnack/gradle/wrapper/gradle-wrapper.properties @@ -14,6 +14,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/Reply/buildscripts/toml-updater-config.gradle b/Reply/buildscripts/toml-updater-config.gradle index 2934311c61..801c23d3e2 100644 --- a/Reply/buildscripts/toml-updater-config.gradle +++ b/Reply/buildscripts/toml-updater-config.gradle @@ -19,10 +19,6 @@ versionCatalogUpdate { keep { // keep versions without any library or plugin reference keepUnusedVersions.set(true) - // keep all libraries that aren't used in the project - keepUnusedLibraries.set(true) - // keep all plugins that aren't used in the project - keepUnusedPlugins.set(true) } } diff --git a/Reply/gradle/libs.versions.toml b/Reply/gradle/libs.versions.toml index 1cd5b96b62..29943df2e6 100644 --- a/Reply/gradle/libs.versions.toml +++ b/Reply/gradle/libs.versions.toml @@ -3,19 +3,20 @@ # Do not add a dependency to an individual sample, edit the global version instead. ##### [versions] -accompanist = "0.37.0" -androidGradlePlugin = "8.8.1" -androidx-activity-compose = "1.10.0" +accompanist = "0.37.2" +android-material3 = "1.13.0-alpha13" +androidGradlePlugin = "8.9.2" +androidx-activity-compose = "1.10.1" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2025.02.00" +androidx-compose-bom = "2025.04.01" androidx-constraintlayout = "1.1.0" androidx-core-splashscreen = "1.0.1" -androidx-corektx = "1.15.0" +androidx-corektx = "1.16.0" androidx-glance = "1.1.1" androidx-lifecycle = "2.8.2" androidx-lifecycle-compose = "2.8.7" androidx-lifecycle-runtime-compose = "2.8.7" -androidx-navigation = "2.8.7" +androidx-navigation = "2.8.9" androidx-palette = "1.0.0" androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" @@ -30,37 +31,37 @@ androix-test-uiautomator = "2.3.0" coil = "2.7.0" # @keep compileSdk = "35" -coroutines = "1.10.1" +coroutines = "1.10.2" google-maps = "18.2.0" gradle-versions = "0.52.0" -hilt = "2.55" +hilt = "2.56.2" hiltExt = "1.2.0" -horologist = "0.6.22" -# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions -jdkDesugar = "1.2.2" +horologist = "0.6.23" +jdkDesugar = "2.1.5" junit = "4.13.2" -kotlin = "2.1.10" +kotlin = "2.1.20" kotlinx-serialization-json = "1.7.3" kotlinx_immutable = "0.3.8" -ksp = "2.1.10-1.0.30" +ksp = "2.1.20-2.0.0" maps-compose = "3.1.1" # @keep minSdk = "21" okhttp = "4.12.0" play-services-wearable = "18.1.0" robolectric = "4.14.1" -roborazzi = "1.42.0" +roborazzi = "1.43.1" rome = "2.1.0" -room = "2.6.1" +room = "2.7.1" secrets = "2.0.1" spotless = "7.0.3" # @keep targetSdk = "33" -version-catalog-update = "0.8.5" +version-catalog-update = "1.0.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } +android-material3 = { module = "com.google.android.material:material", version.ref = "android-material3" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } diff --git a/Reply/gradle/wrapper/gradle-wrapper.properties b/Reply/gradle/wrapper/gradle-wrapper.properties index ba11905c1d..d6c8bc7bf8 100644 --- a/Reply/gradle/wrapper/gradle-wrapper.properties +++ b/Reply/gradle/wrapper/gradle-wrapper.properties @@ -14,6 +14,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/scripts/duplicate_version_config.sh b/scripts/duplicate_version_config.sh index 106decf639..9ab216c798 100755 --- a/scripts/duplicate_version_config.sh +++ b/scripts/duplicate_version_config.sh @@ -39,9 +39,12 @@ cp scripts/toml-updater-config.gradle JetNews/buildscripts/toml-updater-config.g cp scripts/toml-updater-config.gradle Jetsnack/buildscripts/toml-updater-config.gradle cp scripts/toml-updater-config.gradle Reply/buildscripts/toml-updater-config.gradle -cp scripts/init.gradle.kts Jetcaster/buildscripts/init.gradle.kts -cp scripts/init.gradle.kts Jetchat/buildscripts/init.gradle.kts -cp scripts/init.gradle.kts JetLagged/buildscripts/init.gradle.kts -cp scripts/init.gradle.kts JetNews/buildscripts/init.gradle.kts -cp scripts/init.gradle.kts Jetsnack/buildscripts/init.gradle.kts -cp scripts/init.gradle.kts Reply/buildscripts/init.gradle.kts \ No newline at end of file +# TODO: Figure out a way of copying the spotless config into each project following +# this PR: https://github.com/android/compose-samples/pull/1549 + +#cp scripts/init.gradle.kts Jetcaster/buildscripts/init.gradle.kts +#cp scripts/init.gradle.kts Jetchat/buildscripts/init.gradle.kts +#cp scripts/init.gradle.kts JetLagged/buildscripts/init.gradle.kts +#cp scripts/init.gradle.kts JetNews/buildscripts/init.gradle.kts +#cp scripts/init.gradle.kts Jetsnack/buildscripts/init.gradle.kts +#cp scripts/init.gradle.kts Reply/buildscripts/init.gradle.kts \ No newline at end of file diff --git a/scripts/libs.versions.toml b/scripts/libs.versions.toml index 29300201d3..29943df2e6 100644 --- a/scripts/libs.versions.toml +++ b/scripts/libs.versions.toml @@ -3,19 +3,20 @@ # Do not add a dependency to an individual sample, edit the global version instead. ##### [versions] -accompanist = "0.37.0" -androidGradlePlugin = "8.8.1" -androidx-activity-compose = "1.10.0" +accompanist = "0.37.2" +android-material3 = "1.13.0-alpha13" +androidGradlePlugin = "8.9.2" +androidx-activity-compose = "1.10.1" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2025.02.00" +androidx-compose-bom = "2025.04.01" androidx-constraintlayout = "1.1.0" androidx-core-splashscreen = "1.0.1" -androidx-corektx = "1.15.0" +androidx-corektx = "1.16.0" androidx-glance = "1.1.1" androidx-lifecycle = "2.8.2" androidx-lifecycle-compose = "2.8.7" androidx-lifecycle-runtime-compose = "2.8.7" -androidx-navigation = "2.8.7" +androidx-navigation = "2.8.9" androidx-palette = "1.0.0" androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" @@ -30,36 +31,37 @@ androix-test-uiautomator = "2.3.0" coil = "2.7.0" # @keep compileSdk = "35" -coroutines = "1.10.1" +coroutines = "1.10.2" google-maps = "18.2.0" gradle-versions = "0.52.0" -hilt = "2.55" +hilt = "2.56.2" hiltExt = "1.2.0" -horologist = "0.6.22" -# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions -jdkDesugar = "1.2.2" +horologist = "0.6.23" +jdkDesugar = "2.1.5" junit = "4.13.2" -kotlin = "2.1.10" +kotlin = "2.1.20" kotlinx-serialization-json = "1.7.3" kotlinx_immutable = "0.3.8" -ksp = "2.1.10-1.0.30" +ksp = "2.1.20-2.0.0" maps-compose = "3.1.1" # @keep minSdk = "21" okhttp = "4.12.0" play-services-wearable = "18.1.0" robolectric = "4.14.1" -roborazzi = "1.42.0" +roborazzi = "1.43.1" rome = "2.1.0" -room = "2.6.1" +room = "2.7.1" secrets = "2.0.1" +spotless = "7.0.3" # @keep targetSdk = "33" -version-catalog-update = "0.8.5" +version-catalog-update = "1.0.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } +android-material3 = { module = "com.google.android.material:material", version.ref = "android-material3" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } @@ -171,4 +173,5 @@ kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", versi ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" } secrets = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "secrets" } +spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } version-catalog-update = { id = "nl.littlerobots.version-catalog-update", version.ref = "version-catalog-update" } diff --git a/scripts/toml-updater-config.gradle b/scripts/toml-updater-config.gradle index 2934311c61..801c23d3e2 100644 --- a/scripts/toml-updater-config.gradle +++ b/scripts/toml-updater-config.gradle @@ -19,10 +19,6 @@ versionCatalogUpdate { keep { // keep versions without any library or plugin reference keepUnusedVersions.set(true) - // keep all libraries that aren't used in the project - keepUnusedLibraries.set(true) - // keep all plugins that aren't used in the project - keepUnusedPlugins.set(true) } } diff --git a/scripts/verify_samples.sh b/scripts/verify_samples.sh index f011a663e4..1f9833b737 100755 --- a/scripts/verify_samples.sh +++ b/scripts/verify_samples.sh @@ -26,6 +26,6 @@ set -xe ./scripts/gradlew_recursive.sh assembleDebug ./scripts/gradlew_recursive.sh lintDebug -if ! ./scripts/gradlew_recursive.sh --init-script buildscripts/init.gradle.kts spotlessCheck ; then +if ! ./scripts/gradlew_recursive.sh spotlessCheck ; then echo "Formatting error. Try running scripts/format.sh" fi