diff --git a/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt b/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt index 2fd62e964..f95d9ed16 100644 --- a/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt +++ b/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt @@ -12,45 +12,45 @@ androidx.browser:browser:1.8.0 androidx.collection:collection-jvm:1.4.0 androidx.collection:collection-ktx:1.4.0 androidx.collection:collection:1.4.0 -androidx.compose.animation:animation-android:1.7.0-rc01 -androidx.compose.animation:animation-core-android:1.7.0-rc01 -androidx.compose.animation:animation-core:1.7.0-rc01 -androidx.compose.animation:animation:1.7.0-rc01 -androidx.compose.foundation:foundation-android:1.7.0-rc01 -androidx.compose.foundation:foundation-layout-android:1.7.0-rc01 -androidx.compose.foundation:foundation-layout:1.7.0-rc01 -androidx.compose.foundation:foundation:1.7.0-rc01 -androidx.compose.material3.adaptive:adaptive-android:1.0.0-rc01 -androidx.compose.material3.adaptive:adaptive:1.0.0-rc01 -androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.0-rc01 -androidx.compose.material3:material3-adaptive-navigation-suite:1.3.0-rc01 -androidx.compose.material3:material3-android:1.3.0-rc01 -androidx.compose.material3:material3:1.3.0-rc01 -androidx.compose.material:material-icons-core-android:1.6.3 -androidx.compose.material:material-icons-core:1.6.3 -androidx.compose.material:material-icons-extended-android:1.6.3 -androidx.compose.material:material-icons-extended:1.6.3 -androidx.compose.material:material-ripple-android:1.7.0-rc01 -androidx.compose.material:material-ripple:1.7.0-rc01 -androidx.compose.runtime:runtime-android:1.7.0-rc01 -androidx.compose.runtime:runtime-saveable-android:1.7.0-rc01 -androidx.compose.runtime:runtime-saveable:1.7.0-rc01 -androidx.compose.runtime:runtime:1.7.0-rc01 -androidx.compose.ui:ui-android:1.7.0-rc01 -androidx.compose.ui:ui-geometry-android:1.7.0-rc01 -androidx.compose.ui:ui-geometry:1.7.0-rc01 -androidx.compose.ui:ui-graphics-android:1.7.0-rc01 -androidx.compose.ui:ui-graphics:1.7.0-rc01 -androidx.compose.ui:ui-text-android:1.7.0-rc01 -androidx.compose.ui:ui-text:1.7.0-rc01 -androidx.compose.ui:ui-tooling-preview-android:1.7.0-rc01 -androidx.compose.ui:ui-tooling-preview:1.7.0-rc01 -androidx.compose.ui:ui-unit-android:1.7.0-rc01 -androidx.compose.ui:ui-unit:1.7.0-rc01 -androidx.compose.ui:ui-util-android:1.7.0-rc01 -androidx.compose.ui:ui-util:1.7.0-rc01 -androidx.compose.ui:ui:1.7.0-rc01 -androidx.compose:compose-bom:2024.02.02 +androidx.compose.animation:animation-android:1.7.0 +androidx.compose.animation:animation-core-android:1.7.0 +androidx.compose.animation:animation-core:1.7.0 +androidx.compose.animation:animation:1.7.0 +androidx.compose.foundation:foundation-android:1.7.0 +androidx.compose.foundation:foundation-layout-android:1.7.0 +androidx.compose.foundation:foundation-layout:1.7.0 +androidx.compose.foundation:foundation:1.7.0 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 +androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.0 +androidx.compose.material3:material3-adaptive-navigation-suite:1.3.0 +androidx.compose.material3:material3-android:1.3.0 +androidx.compose.material3:material3:1.3.0 +androidx.compose.material:material-icons-core-android:1.7.0 +androidx.compose.material:material-icons-core:1.7.0 +androidx.compose.material:material-icons-extended-android:1.7.0 +androidx.compose.material:material-icons-extended:1.7.0 +androidx.compose.material:material-ripple-android:1.7.0 +androidx.compose.material:material-ripple:1.7.0 +androidx.compose.runtime:runtime-android:1.7.0 +androidx.compose.runtime:runtime-saveable-android:1.7.0 +androidx.compose.runtime:runtime-saveable:1.7.0 +androidx.compose.runtime:runtime:1.7.0 +androidx.compose.ui:ui-android:1.7.0 +androidx.compose.ui:ui-geometry-android:1.7.0 +androidx.compose.ui:ui-geometry:1.7.0 +androidx.compose.ui:ui-graphics-android:1.7.0 +androidx.compose.ui:ui-graphics:1.7.0 +androidx.compose.ui:ui-text-android:1.7.0 +androidx.compose.ui:ui-text:1.7.0 +androidx.compose.ui:ui-tooling-preview-android:1.7.0 +androidx.compose.ui:ui-tooling-preview:1.7.0 +androidx.compose.ui:ui-unit-android:1.7.0 +androidx.compose.ui:ui-unit:1.7.0 +androidx.compose.ui:ui-util-android:1.7.0 +androidx.compose.ui:ui-util:1.7.0 +androidx.compose.ui:ui:1.7.0 +androidx.compose:compose-bom:2024.09.00 androidx.concurrent:concurrent-futures:1.1.0 androidx.core:core-ktx:1.13.1 androidx.core:core:1.13.1 @@ -91,9 +91,9 @@ androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager:viewpager:1.0.0 androidx.window.extensions.core:core:1.0.0 -androidx.window:window-core-android:1.3.0-rc01 -androidx.window:window-core:1.3.0-rc01 -androidx.window:window:1.3.0-rc01 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 com.google.accompanist:accompanist-drawablepainter:0.32.0 com.google.code.findbugs:jsr305:3.0.2 com.google.dagger:dagger-lint-aar:2.51.1 diff --git a/app/dependencies/prodReleaseRuntimeClasspath.txt b/app/dependencies/prodReleaseRuntimeClasspath.txt index 54a396dff..9eec115fa 100644 --- a/app/dependencies/prodReleaseRuntimeClasspath.txt +++ b/app/dependencies/prodReleaseRuntimeClasspath.txt @@ -21,24 +21,24 @@ androidx.compose.foundation:foundation-android:1.7.0 androidx.compose.foundation:foundation-layout-android:1.7.0 androidx.compose.foundation:foundation-layout:1.7.0 androidx.compose.foundation:foundation:1.7.0 -androidx.compose.material3.adaptive:adaptive-android:1.0.0-rc01 -androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0-rc01 -androidx.compose.material3.adaptive:adaptive-layout:1.0.0-rc01 -androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0-rc01 -androidx.compose.material3.adaptive:adaptive-navigation:1.0.0-rc01 -androidx.compose.material3.adaptive:adaptive:1.0.0-rc01 -androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.0-rc01 -androidx.compose.material3:material3-adaptive-navigation-suite:1.3.0-rc01 -androidx.compose.material3:material3-android:1.3.0-rc01 -androidx.compose.material3:material3-window-size-class-android:1.3.0-rc01 -androidx.compose.material3:material3-window-size-class:1.3.0-rc01 -androidx.compose.material3:material3:1.3.0-rc01 -androidx.compose.material:material-icons-core-android:1.6.3 -androidx.compose.material:material-icons-core:1.6.3 -androidx.compose.material:material-icons-extended-android:1.6.3 -androidx.compose.material:material-icons-extended:1.6.3 -androidx.compose.material:material-ripple-android:1.7.0-rc01 -androidx.compose.material:material-ripple:1.7.0-rc01 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 +androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.0 +androidx.compose.material3:material3-adaptive-navigation-suite:1.3.0 +androidx.compose.material3:material3-android:1.3.0 +androidx.compose.material3:material3-window-size-class-android:1.3.0 +androidx.compose.material3:material3-window-size-class:1.3.0 +androidx.compose.material3:material3:1.3.0 +androidx.compose.material:material-icons-core-android:1.7.0 +androidx.compose.material:material-icons-core:1.7.0 +androidx.compose.material:material-icons-extended-android:1.7.0 +androidx.compose.material:material-icons-extended:1.7.0 +androidx.compose.material:material-ripple-android:1.7.0 +androidx.compose.material:material-ripple:1.7.0 androidx.compose.runtime:runtime-android:1.7.0 androidx.compose.runtime:runtime-saveable-android:1.7.0 androidx.compose.runtime:runtime-saveable:1.7.0 @@ -58,7 +58,7 @@ androidx.compose.ui:ui-unit:1.7.0 androidx.compose.ui:ui-util-android:1.7.0 androidx.compose.ui:ui-util:1.7.0 androidx.compose.ui:ui:1.7.0 -androidx.compose:compose-bom:2024.02.02 +androidx.compose:compose-bom:2024.09.00 androidx.concurrent:concurrent-futures:1.1.0 androidx.core:core-ktx:1.13.1 androidx.core:core-splashscreen:1.0.1 diff --git a/core/model/src/main/kotlin/com/google/samples/apps/nowinandroid/core/model/data/UserNewsResource.kt b/core/model/src/main/kotlin/com/google/samples/apps/nowinandroid/core/model/data/UserNewsResource.kt index a56bbcb8d..77dfa4394 100644 --- a/core/model/src/main/kotlin/com/google/samples/apps/nowinandroid/core/model/data/UserNewsResource.kt +++ b/core/model/src/main/kotlin/com/google/samples/apps/nowinandroid/core/model/data/UserNewsResource.kt @@ -22,6 +22,7 @@ import kotlinx.datetime.Instant * A [NewsResource] with additional user information such as whether the user is following the * news resource's topics and whether they have saved (bookmarked) this news resource. */ +@ConsistentCopyVisibility data class UserNewsResource internal constructor( val id: String, val title: String, diff --git a/core/ui/src/main/kotlin/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt b/core/ui/src/main/kotlin/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt index afdb584a2..c22a02fa1 100644 --- a/core/ui/src/main/kotlin/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt +++ b/core/ui/src/main/kotlin/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt @@ -87,7 +87,7 @@ fun LazyStaggeredGridScope.newsFeed( onTopicClick = onTopicClick, modifier = Modifier .padding(horizontal = 8.dp) - .animateItemPlacement(), + .animateItem(), ) } } diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt b/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt index 86b1eb717..ff91941a8 100644 --- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt +++ b/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt @@ -41,7 +41,6 @@ import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridItemSpan import androidx.compose.foundation.lazy.staggeredgrid.rememberLazyStaggeredGridState import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.text.ClickableText import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Icon @@ -66,6 +65,7 @@ import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.LinkAnnotation import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.buildAnnotatedString @@ -73,6 +73,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.text.withLink import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter @@ -227,23 +228,31 @@ fun EmptySearchResultBody( textAlign = TextAlign.Center, modifier = Modifier.padding(vertical = 24.dp), ) - val interests = stringResource(id = searchR.string.feature_search_interests) val tryAnotherSearchString = buildAnnotatedString { append(stringResource(id = searchR.string.feature_search_try_another_search)) append(" ") - withStyle( - style = SpanStyle( - textDecoration = TextDecoration.Underline, - fontWeight = FontWeight.Bold, + withLink( + LinkAnnotation.Clickable( + tag = "", + linkInteractionListener = { + onInterestsClick() + }, ), ) { - pushStringAnnotation(tag = interests, annotation = interests) - append(interests) + withStyle( + style = SpanStyle( + textDecoration = TextDecoration.Underline, + fontWeight = FontWeight.Bold, + ), + ) { + append(stringResource(id = searchR.string.feature_search_interests)) + } } + append(" ") append(stringResource(id = searchR.string.feature_search_to_browse_topics)) } - ClickableText( + Text( text = tryAnotherSearchString, style = MaterialTheme.typography.bodyLarge.merge( TextStyle( @@ -252,13 +261,8 @@ fun EmptySearchResultBody( ), ), modifier = Modifier - .padding(start = 36.dp, end = 36.dp, bottom = 24.dp) - .clickable {}, - ) { offset -> - tryAnotherSearchString.getStringAnnotations(start = offset, end = offset) - .firstOrNull() - ?.let { onInterestsClick() } - } + .padding(start = 36.dp, end = 36.dp, bottom = 24.dp), + ) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e5f671ef4..00c180194 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,10 +7,7 @@ androidTools = "31.6.0" androidxActivity = "1.8.2" androidxAppCompat = "1.7.0" androidxBrowser = "1.8.0" -androidxComposeAlpha = "1.7.0-beta01" -androidxComposeBom = "2024.02.02" -androidxComposeMaterial3Adaptive = "1.0.0-rc01" -androidxComposeMaterial3AdaptiveNavigationSuite = "1.3.0-rc01" +androidxComposeBom = "2024.09.00" androidxComposeRuntimeTracing = "1.0.0-beta01" androidxCore = "1.12.0" androidxCoreSplashscreen = "1.0.1" @@ -71,18 +68,18 @@ androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version androidx-benchmark-macro = { group = "androidx.benchmark", name = "benchmark-macro-junit4", version.ref = "androidxMacroBenchmark" } androidx-browser = { group = "androidx.browser", name = "browser", version.ref = "androidxBrowser" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" } -androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "androidxComposeAlpha" } +androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" } androidx-compose-foundation-layout = { group = "androidx.compose.foundation", name = "foundation-layout" } androidx-compose-material-iconsExtended = { group = "androidx.compose.material", name = "material-icons-extended" } androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" } -androidx-compose-material3-navigationSuite = { group = "androidx.compose.material3", name = "material3-adaptive-navigation-suite", version.ref = "androidxComposeMaterial3AdaptiveNavigationSuite" } -androidx-compose-material3-adaptive = { group = "androidx.compose.material3.adaptive", name = "adaptive", version.ref = "androidxComposeMaterial3Adaptive" } -androidx-compose-material3-adaptive-layout = { group = "androidx.compose.material3.adaptive", name = "adaptive-layout", version.ref = "androidxComposeMaterial3Adaptive" } -androidx-compose-material3-adaptive-navigation = { group = "androidx.compose.material3.adaptive", name = "adaptive-navigation", version.ref = "androidxComposeMaterial3Adaptive" } +androidx-compose-material3-navigationSuite = { group = "androidx.compose.material3", name = "material3-adaptive-navigation-suite" } +androidx-compose-material3-adaptive = { group = "androidx.compose.material3.adaptive", name = "adaptive" } +androidx-compose-material3-adaptive-layout = { group = "androidx.compose.material3.adaptive", name = "adaptive-layout" } +androidx-compose-material3-adaptive-navigation = { group = "androidx.compose.material3.adaptive", name = "adaptive-navigation" } androidx-compose-material3-windowSizeClass = { group = "androidx.compose.material3", name = "material3-window-size-class" } androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime" } androidx-compose-runtime-tracing = { group = "androidx.compose.runtime", name = "runtime-tracing", version.ref = "androidxComposeRuntimeTracing" } -androidx-compose-ui-test = { group = "androidx.compose.ui", name = "ui-test-junit4", version.ref = "androidxComposeAlpha" } +androidx-compose-ui-test = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-compose-ui-testManifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }