diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3e0558e07..daccb722a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -9,11 +9,9 @@ Please fill out either the individual or corporate Contributor License Agreement
(CLA).
* If you are an individual writing original source code and you're sure you
- own the intellectual property, then you'll need to sign an [individual CLA]
- (https://developers.google.com/open-source/cla/individual).
+ own the intellectual property, then you'll need to sign an [individual CLA](https://developers.google.com/open-source/cla/individual).
* If you work for a company that wants to allow you to contribute your work,
- then you'll need to sign a [corporate CLA]
- (https://developers.google.com/open-source/cla/corporate).
+ then you'll need to sign a [corporate CLA](https://developers.google.com/open-source/cla/corporate).
Follow either of the two links above to access the appropriate CLA and
instructions for how to sign and return it. Once we receive it, we'll be able to
@@ -28,8 +26,7 @@ accept your pull requests.
1. Fork the desired repo, develop and test your code changes.
1. Ensure that your code adheres to the existing style in the sample to which
you are contributing. Refer to the
- [Google Cloud Platform Samples Style Guide]
- (https://github.com/GoogleCloudPlatform/Template/wiki/style.html) for the
+ [Google Cloud Platform Samples Style Guide](https://github.com/GoogleCloudPlatform/Template/wiki/style.html) for the
recommended coding standards for this organization.
1. Ensure that your code has an appropriate set of unit tests which all pass.
1. Submit a pull request.
diff --git a/README.md b/README.md
index de4fe158f..20a996b15 100644
--- a/README.md
+++ b/README.md
@@ -112,16 +112,15 @@ Find out more about the [UI architecture here](docs/ArchitectureLearningJourney.
# Baseline profiles
-The baseline profile for this app is located at `app/src/main/baseline-prof.txt`.
+The baseline profile for this app is located at [`app/src/main/baseline-prof.txt`](app/src/main/baseline-prof.txt).
It contains rules that enable AOT compilation of the critical user path taken during app launch.
For more information on baseline profiles, read [this document](https://developer.android.com/studio/profile/baselineprofiles).
-| Note: The baseline profile needs to be re-generated for release builds that touched code which
-| changes app startup.
+> Note: The baseline profile needs to be re-generated for release builds that touched code which changes app startup.
To generate the baseline profile, select the `benchmark` build variant and run the
`BaselineProfileGenerator` benchmark test on an AOSP Android Emulator.
-Then copy the resulting baseline profile from the emulator to `app/src/main/baseline-prof.txt`.
+Then copy the resulting baseline profile from the emulator to [`app/src/main/baseline-prof.txt`](app/src/main/baseline-prof.txt).
# License
diff --git a/app-nia-catalog/build.gradle.kts b/app-nia-catalog/build.gradle.kts
index dc8d4ffc0..8ab94c29f 100644
--- a/app-nia-catalog/build.gradle.kts
+++ b/app-nia-catalog/build.gradle.kts
@@ -35,4 +35,5 @@ dependencies {
implementation(project(":core-ui"))
implementation(libs.androidx.activity.compose)
+ implementation(libs.accompanist.flowlayout)
}
\ No newline at end of file
diff --git a/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt b/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt
index c4f66166a..30e73e17b 100644
--- a/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt
+++ b/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt
@@ -17,7 +17,6 @@
package com.google.samples.apps.niacatalog.ui
import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.add
import androidx.compose.foundation.layout.asPaddingValues
@@ -37,6 +36,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
+import com.google.accompanist.flowlayout.FlowRow
import com.google.samples.apps.nowinandroid.core.ui.component.NiaDropdownMenuButton
import com.google.samples.apps.nowinandroid.core.ui.component.NiaFilledButton
import com.google.samples.apps.nowinandroid.core.ui.component.NiaFilterChip
@@ -76,7 +76,7 @@ fun NiaCatalog() {
}
item { Text("Buttons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(onClick = {}) {
Text(text = "Enabled")
}
@@ -90,7 +90,7 @@ fun NiaCatalog() {
}
item { Text("Disabled buttons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
enabled = false
@@ -113,7 +113,7 @@ fun NiaCatalog() {
}
item { Text("Buttons with leading icons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
text = { Text(text = "Enabled") },
@@ -139,7 +139,7 @@ fun NiaCatalog() {
}
item { Text("Disabled buttons with leading icons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
enabled = false,
@@ -168,7 +168,7 @@ fun NiaCatalog() {
}
item { Text("Buttons with trailing icons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
text = { Text(text = "Enabled") },
@@ -194,7 +194,7 @@ fun NiaCatalog() {
}
item { Text("Disabled buttons with trailing icons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
enabled = false,
@@ -223,7 +223,7 @@ fun NiaCatalog() {
}
item { Text("Small buttons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
small = true
@@ -246,7 +246,7 @@ fun NiaCatalog() {
}
item { Text("Disabled small buttons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
enabled = false,
@@ -272,7 +272,7 @@ fun NiaCatalog() {
}
item { Text("Small buttons with leading icons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
small = true,
@@ -306,7 +306,7 @@ fun NiaCatalog() {
)
}
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
enabled = false,
@@ -338,7 +338,7 @@ fun NiaCatalog() {
}
item { Text("Small buttons with trailing icons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
small = true,
@@ -372,7 +372,7 @@ fun NiaCatalog() {
)
}
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(
onClick = {},
enabled = false,
@@ -413,7 +413,7 @@ fun NiaCatalog() {
}
item { Text("Chips", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
var firstChecked by remember { mutableStateOf(false) }
NiaFilterChip(
checked = firstChecked,
@@ -437,7 +437,7 @@ fun NiaCatalog() {
}
item { Text("Toggle buttons", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
var firstChecked by remember { mutableStateOf(false) }
NiaToggleButton(
checked = firstChecked,
@@ -498,7 +498,7 @@ fun NiaCatalog() {
}
item { Text("View toggle", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
var firstExpanded by remember { mutableStateOf(false) }
NiaViewToggleButton(
expanded = firstExpanded,
@@ -517,7 +517,7 @@ fun NiaCatalog() {
}
item { Text("Tags", Modifier.padding(top = 16.dp)) }
item {
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
+ FlowRow(mainAxisSpacing = 16.dp) {
var firstFollowed by remember { mutableStateOf(false) }
NiaTopicTag(
followed = firstFollowed,
diff --git a/app-nia-catalog/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app-nia-catalog/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
index ee103766b..28878a729 100644
--- a/app-nia-catalog/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/app-nia-catalog/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -17,4 +17,5 @@
+
\ No newline at end of file
diff --git a/app/benchmark-rules.pro b/app/benchmark-rules.pro
index 335c5b289..ddecd591b 100644
--- a/app/benchmark-rules.pro
+++ b/app/benchmark-rules.pro
@@ -1,2 +1,6 @@
-#Proguard rules for the `benchmark` build type.
+# Proguard rules for the `benchmark` build type.
+#
+# Obsfuscation must be disabled for the build variant that generates Baseline Profile, otherwise
+# wrong symbols would be generated. The generated Baseline Profile will be properly applied when generated
+# without obfuscation and your app is being obfuscated.
-dontobfuscate
\ No newline at end of file
diff --git a/app/src/main/baseline-prof.txt b/app/src/main/baseline-prof.txt
index b1d1eb989..2e677c394 100644
--- a/app/src/main/baseline-prof.txt
+++ b/app/src/main/baseline-prof.txt
@@ -73,7 +73,6 @@ HSPLandroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility
HSPLandroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility;->compareTo(II)I
HSPLandroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility;->ordinal(I)I
HSPLandroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility;->values(I)[I
-HSPLandroidx/compose/animation/core/AnimationResult;->(Landroidx/compose/animation/core/AnimationState;I)V
HSPLandroidx/compose/animation/core/AnimationScope;->(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationVector;JLjava/lang/Object;JZLkotlin/jvm/functions/Function0;)V
HSPLandroidx/compose/animation/core/AnimationScope;->getValue()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/AnimationScope;->setRunning$animation_core_release(Z)V
@@ -115,6 +114,8 @@ HSPLandroidx/compose/animation/core/AnimationVector;->getSize$animation_core_rel
HSPLandroidx/compose/animation/core/AnimationVector;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationVector;->reset$animation_core_release()V
HSPLandroidx/compose/animation/core/AnimationVector;->set$animation_core_release(IF)V
+HSPLandroidx/compose/animation/core/AnimationVectorsKt;->copy(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/AnimationVectorsKt;->newInstance(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/Animations;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec;
HSPLandroidx/compose/animation/core/ComplexDouble;->(DD)V
HSPLandroidx/compose/animation/core/ComplexDouble;->equals(Ljava/lang/Object;)Z
@@ -446,7 +447,6 @@ HSPLandroidx/compose/foundation/Background;->foldOut(Ljava/lang/Object;Lkotlin/j
HSPLandroidx/compose/foundation/Background;->hashCode()I
HSPLandroidx/compose/foundation/Background;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/foundation/Background;->toString()Ljava/lang/String;
-HSPLandroidx/compose/foundation/BackgroundKt;->background$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;FI)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/foundation/BackgroundKt;->background-bw27NRU$default(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;I)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/foundation/BackgroundKt;->background-bw27NRU(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/foundation/BorderKt$border$2$1;->(FLandroidx/compose/ui/graphics/Shape;Landroidx/compose/ui/node/Ref;Landroidx/compose/ui/graphics/Brush;)V
@@ -1330,6 +1330,7 @@ HSPLandroidx/compose/foundation/layout/SizeModifier;->foldOut(Ljava/lang/Object;
HSPLandroidx/compose/foundation/layout/SizeModifier;->hashCode()I
HSPLandroidx/compose/foundation/layout/SizeModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
HSPLandroidx/compose/foundation/layout/SizeModifier;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SpacerKt$$ExternalSyntheticOutline0;->m(Landroidx/compose/runtime/Composer;Landroidx/compose/ui/platform/ViewConfiguration;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/SkippableUpdater;
HSPLandroidx/compose/foundation/layout/SpacerKt;->Spacer(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V
HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->()V
HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->()V
@@ -1388,14 +1389,12 @@ HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsum
HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->()V
HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->invoke()Ljava/lang/Object;
HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->()V
+HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->consumedWindowInsets(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->windowInsetsPadding(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/foundation/layout/WindowInsetsPadding_androidKt$safeDrawingPadding$$inlined$windowInsetsPadding$1;->()V
HSPLandroidx/compose/foundation/layout/WindowInsetsPadding_androidKt$safeDrawingPadding$$inlined$windowInsetsPadding$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->hasAny-bkgdKaI$foundation_layout_release(II)Z
HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->valueToString_impl$lambda-0$appendPlus(Ljava/lang/StringBuilder;Ljava/lang/String;)V
-HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->ValueInsets(Landroidx/core/graphics/Insets;Ljava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets;
-HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getSafeDrawing(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;)Landroidx/compose/foundation/layout/WindowInsets;
-HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->toInsetsValues(Landroidx/core/graphics/Insets;)Landroidx/compose/foundation/layout/InsetsValues;
HSPLandroidx/compose/foundation/layout/WrapContentModifier$measure$1;->(Landroidx/compose/foundation/layout/WrapContentModifier;ILandroidx/compose/ui/layout/Placeable;ILandroidx/compose/ui/layout/MeasureScope;)V
HSPLandroidx/compose/foundation/layout/WrapContentModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/foundation/layout/WrapContentModifier;->(IZLkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
@@ -1781,6 +1780,7 @@ HSPLandroidx/compose/foundation/lazy/layout/DummyHandle;->cancel()V
HSPLandroidx/compose/foundation/lazy/layout/IntervalHolder;->(IILjava/lang/Object;)V
HSPLandroidx/compose/foundation/lazy/layout/IntervalList;->getIntervals()Ljava/util/List;
HSPLandroidx/compose/foundation/lazy/layout/IntervalList;->getTotalSize()I
+HSPLandroidx/compose/foundation/lazy/layout/IntervalListKt;->intervalIndexForItemIndex(Landroidx/compose/foundation/lazy/layout/IntervalList;I)I
HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V
HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1$invoke$$inlined$onDispose$1;->dispose()V
HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V
@@ -1839,7 +1839,6 @@ HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->schedulePrefe
HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt$LazyLayoutPrefetcher$2;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/ui/layout/SubcomposeLayoutState;I)V
HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt$LazyLayoutPrefetcher$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt;->LazyLayoutPrefetcher(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/runtime/Composer;I)V
-HSPLandroidx/compose/foundation/lazy/layout/Lazy_androidKt;->throwSubtypeNotRegistered(Ljava/lang/String;Lkotlin/reflect/KClass;)Ljava/lang/Void;
HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->()V
HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->add(ILjava/lang/Object;)V
HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->getIntervals()Ljava/util/List;
@@ -2734,6 +2733,7 @@ HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementati
HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->(Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V
HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->add(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet;
HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;->()V
HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->checkElementIndex$runtime_release(II)V
HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;->()V
HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;->(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;I)V
@@ -2873,6 +2873,8 @@ HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->iterator()Ljava/util/Iter
HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->or(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotIdSet;
HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->set(I)Landroidx/compose/runtime/snapshots/SnapshotIdSet;
HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->toString()Ljava/lang/String;
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->access$lowestBitOf(J)I
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->binarySearch([II)I
HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;->()V
HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;->()V
HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
@@ -3119,8 +3121,6 @@ HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->(Landroid/graphics/B
HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getHeight()I
HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getWidth()I
HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->prepareToDraw()V
-HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->asAndroidBitmap(Landroidx/compose/ui/graphics/ImageBitmap;)Landroid/graphics/Bitmap;
-HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->toBitmapConfig-1JJdX4A(I)Landroid/graphics/Bitmap$Config;
HSPLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->setFrom-tU-YjHk([FLandroid/graphics/Matrix;)V
HSPLandroidx/compose/ui/graphics/AndroidPaint;->()V
HSPLandroidx/compose/ui/graphics/AndroidPaint;->asFrameworkPaint()Landroid/graphics/Paint;
@@ -3185,12 +3185,14 @@ HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->hashCode()I
HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->toString()Ljava/lang/String;
+HSPLandroidx/compose/ui/graphics/Brush;->()V
HSPLandroidx/compose/ui/graphics/Brush;->()V
HSPLandroidx/compose/ui/graphics/Brush;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/ui/graphics/Brush;->applyTo-Pq9zytI(JLandroidx/compose/ui/graphics/Paint;F)V
HSPLandroidx/compose/ui/graphics/Canvas$DefaultImpls;->clipPath-mtrdD-E$default(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/graphics/Path;IILjava/lang/Object;)V
HSPLandroidx/compose/ui/graphics/Canvas$DefaultImpls;->drawRect(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/geometry/Rect;Landroidx/compose/ui/graphics/Paint;)V
HSPLandroidx/compose/ui/graphics/CanvasHolder;->()V
+HSPLandroidx/compose/ui/graphics/CanvasKt;->Canvas(Landroidx/compose/ui/graphics/ImageBitmap;)Landroidx/compose/ui/graphics/Canvas;
HSPLandroidx/compose/ui/graphics/Color$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/ui/graphics/Color;->()V
HSPLandroidx/compose/ui/graphics/Color;->(J)V
@@ -3328,15 +3330,6 @@ HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->hashCode()I
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->isSrgb()Z
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->toString()Ljava/lang/String;
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->toXyz([F)[F
-HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->adapt$default(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/Adaptation;I)Landroidx/compose/ui/graphics/colorspace/ColorSpace;
-HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->chromaticAdaptation([F[F[F)[F
-HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->compare(Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/WhitePoint;)Z
-HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->connect-YBCOT_4$default(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;II)Landroidx/compose/ui/graphics/colorspace/Connector;
-HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->inverse3x3([F)[F
-HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3([F[F)[F
-HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Diag([F[F)[F
-HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3([F[F)[F
-HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->rcpResponse(DDDDDD)D
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;->()V
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;->()V
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
@@ -3800,6 +3793,7 @@ HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt;->rememberVectorPainter(
HSPLandroidx/compose/ui/graphics/vector/VectorPath;->(Ljava/lang/String;Ljava/util/List;ILandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/ui/graphics/vector/VectorPath;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/graphics/vector/VectorPath;->hashCode()I
+HSPLandroidx/compose/ui/graphics/vector/compat/AndroidVectorResources;->()V
HSPLandroidx/compose/ui/graphics/vector/compat/XmlVectorParser_androidKt;->obtainBrushFromComplexColor(Landroidx/core/content/res/ComplexColorCompat;)Landroidx/compose/ui/graphics/Brush;
HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1;->(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V
HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1;->invoke()Ljava/lang/Object;
@@ -3860,6 +3854,14 @@ HSPLandroidx/compose/ui/input/pointer/NodeParent;->dispatchMainEventPass(Ljava/u
HSPLandroidx/compose/ui/input/pointer/NodeParent;->removeDetachedPointerInputFilters()V
HSPLandroidx/compose/ui/input/pointer/PointerEvent;->(Ljava/util/List;Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V
HSPLandroidx/compose/ui/input/pointer/PointerEvent;->getMotionEvent$ui_release()Landroid/view/MotionEvent;
+HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToDown(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
+HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToDownIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
+HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToUp(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
+HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToUpIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
+HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->isOutOfBounds-O0kMr_c(Landroidx/compose/ui/input/pointer/PointerInputChange;J)Z
+HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->isOutOfBounds-jwHxaWs(Landroidx/compose/ui/input/pointer/PointerInputChange;JJ)Z
+HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChangeInternal(Landroidx/compose/ui/input/pointer/PointerInputChange;Z)J
+HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChangedIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->()V
HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->(Ljava/lang/String;I)V
HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->valueOf(Ljava/lang/String;)Landroidx/compose/ui/input/pointer/PointerEventPass;
@@ -3888,6 +3890,9 @@ HSPLandroidx/compose/ui/input/pointer/PointerInputEventProcessor;->process-BIzXf
HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;->()V
HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;->onCancel()V
HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V
+HSPLandroidx/compose/ui/input/pointer/PointerType;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/input/pointer/PointerType;->toString-impl(I)Ljava/lang/String;
+HSPLandroidx/compose/ui/input/pointer/ProcessResult;->getDispatchedToAPointerInputModifier-impl(I)Z
HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;Lkotlin/coroutines/Continuation;)V
HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->awaitPointerEvent(Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->getContext()Lkotlin/coroutines/CoroutineContext;
@@ -3997,6 +4002,8 @@ HSPLandroidx/compose/ui/layout/ContentScale$Companion$Inside$1;->computeScaleFac
HSPLandroidx/compose/ui/layout/ContentScale$Companion;->()V
HSPLandroidx/compose/ui/layout/ContentScale$Companion;->()V
HSPLandroidx/compose/ui/layout/ContentScale;->computeScaleFactor-H7hwNQA(JJ)J
+HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillHeight-iLBOSCw(JJ)F
+HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillWidth-iLBOSCw(JJ)F
HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;->(Lkotlin/jvm/functions/Function2;)V
HSPLandroidx/compose/ui/layout/IntrinsicMeasurable;->getParentData()Ljava/lang/Object;
HSPLandroidx/compose/ui/layout/IntrinsicMeasureScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
@@ -4008,10 +4015,6 @@ HSPLandroidx/compose/ui/layout/LayoutCoordinates;->localBoundingBoxOf(Landroidx/
HSPLandroidx/compose/ui/layout/LayoutCoordinates;->localPositionOf-R5De75A(Landroidx/compose/ui/layout/LayoutCoordinates;J)J
HSPLandroidx/compose/ui/layout/LayoutCoordinates;->localToRoot-MK-Hz9U(J)J
HSPLandroidx/compose/ui/layout/LayoutCoordinates;->localToWindow-MK-Hz9U(J)J
-HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->boundsInParent(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect;
-HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->boundsInRoot(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect;
-HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->findRoot(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/layout/LayoutCoordinates;
-HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->positionInRoot(Landroidx/compose/ui/layout/LayoutCoordinates;)J
HSPLandroidx/compose/ui/layout/LayoutId;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
HSPLandroidx/compose/ui/layout/LayoutId;->all(Lkotlin/jvm/functions/Function1;)Z
HSPLandroidx/compose/ui/layout/LayoutId;->equals(Ljava/lang/Object;)Z
@@ -4305,7 +4308,6 @@ HSPLandroidx/compose/ui/node/HitTestResult;->sort(Ljava/util/Comparator;)V
HSPLandroidx/compose/ui/node/HitTestResult;->subList(II)Ljava/util/List;
HSPLandroidx/compose/ui/node/HitTestResult;->toArray()[Ljava/lang/Object;
HSPLandroidx/compose/ui/node/HitTestResult;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
-HSPLandroidx/compose/ui/node/HitTestResultKt;->access$DistanceAndInLayer(FZ)J
HSPLandroidx/compose/ui/node/InnerPlaceable;->()V
HSPLandroidx/compose/ui/node/InnerPlaceable;->(Landroidx/compose/ui/node/LayoutNode;)V
HSPLandroidx/compose/ui/node/InnerPlaceable;->calculateAlignmentLine(Landroidx/compose/ui/layout/AlignmentLine;)I
@@ -4949,7 +4951,6 @@ HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageV
HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->()V
HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->ProvideAndroidCompositionLocals(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->access$noLocalProvidedFor(Ljava/lang/String;)Ljava/lang/Void;
-HSPLandroidx/compose/ui/platform/AndroidFontResourceLoader;->(Landroid/content/Context;)V
HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2$dispatcher$1;->(Lkotlin/coroutines/Continuation;)V
HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2$dispatcher$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2$dispatcher$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
@@ -5366,13 +5367,13 @@ HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->(Landroidx/compose/u
HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->hashCode()I
HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->toString()Ljava/lang/String;
-HSPLandroidx/compose/ui/text/ParagraphStyle;->(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Lkotlinx/coroutines/SupervisorKt;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/ParagraphStyle;->(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Lcoil/util/-FileSystems;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/ui/text/ParagraphStyle;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/ParagraphStyle;->hashCode()I
HSPLandroidx/compose/ui/text/ParagraphStyle;->merge(Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle;
HSPLandroidx/compose/ui/text/ParagraphStyle;->toString()Ljava/lang/String;
HSPLandroidx/compose/ui/text/SpanStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;I)V
-HSPLandroidx/compose/ui/text/SpanStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/SpanStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Lcoil/util/-Logs;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/ui/text/SpanStyle;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/SpanStyle;->hashCode()I
HSPLandroidx/compose/ui/text/SpanStyle;->merge(Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle;
@@ -5405,8 +5406,8 @@ HSPLandroidx/compose/ui/text/TextRangeKt;->TextRange(II)J
HSPLandroidx/compose/ui/text/TextRangeKt;->constrain-8ffj60Q(JII)J
HSPLandroidx/compose/ui/text/TextStyle;->()V
HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;I)V
-HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Lkotlinx/coroutines/SupervisorKt;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLandroidx/compose/ui/text/TextStyle;->(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/ParagraphStyle;Lkotlinx/coroutines/SupervisorKt;)V
+HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Lkotlinx/coroutines/EventLoop_commonKt;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/TextStyle;->(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/ParagraphStyle;Lkotlinx/coroutines/EventLoop_commonKt;)V
HSPLandroidx/compose/ui/text/TextStyle;->copy-HL5avdY$default(Landroidx/compose/ui/text/TextStyle;JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;I)Landroidx/compose/ui/text/TextStyle;
HSPLandroidx/compose/ui/text/TextStyle;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/TextStyle;->hashCode()I
@@ -5477,7 +5478,6 @@ HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->(Landroidx/comp
HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;)Landroidx/compose/runtime/State;
HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->resolve-DPcqOEQ(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;II)Landroidx/compose/runtime/State;
HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;->()V
-HSPLandroidx/compose/ui/text/font/FontFamilyResolver_androidKt;->createFontFamilyResolver(Landroid/content/Context;)Landroidx/compose/ui/text/font/FontFamily$Resolver;
HSPLandroidx/compose/ui/text/font/FontListFontFamily;->add(ILjava/lang/Object;)V
HSPLandroidx/compose/ui/text/font/FontListFontFamily;->add(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/font/FontListFontFamily;->addAll(ILjava/util/Collection;)Z
@@ -5783,6 +5783,7 @@ HSPLandroidx/compose/ui/unit/Velocity;->minus-AH228Gc(JJ)J
HSPLandroidx/compose/ui/unit/Velocity;->plus-AH228Gc(JJ)J
HSPLandroidx/compose/ui/unit/Velocity;->toString()Ljava/lang/String;
HSPLandroidx/compose/ui/unit/VelocityKt;->Velocity(FF)J
+HSPLandroidx/compose/ui/util/MathHelpersKt;->lerp(FFF)F
HSPLandroidx/lifecycle/LiveData$1;->(Landroidx/lifecycle/LiveData;)V
HSPLandroidx/lifecycle/LiveData$1;->run()V
HSPLandroidx/lifecycle/LiveData$AlwaysActiveObserver;->(Landroidx/lifecycle/LiveData;Landroidx/lifecycle/Observer;)V
@@ -5854,7 +5855,6 @@ HSPLandroidx/navigation/NavDeepLinkRequest;->(Landroid/content/Intent;)V
HSPLandroidx/navigation/NavDeepLinkRequest;->(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)V
HSPLandroidx/navigation/NavDestination;->()V
HSPLandroidx/navigation/NavDestination;->(Landroidx/navigation/Navigator;)V
-HSPLandroidx/navigation/NavDestination;->addArgument(Ljava/lang/String;Landroidx/navigation/NavArgument;)V
HSPLandroidx/navigation/NavDestination;->addInDefaultArgs(Landroid/os/Bundle;)Landroid/os/Bundle;
HSPLandroidx/navigation/NavDestination;->equals(Ljava/lang/Object;)Z
HSPLandroidx/navigation/NavDestination;->getArguments()Ljava/util/Map;
@@ -6047,6 +6047,8 @@ HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumedState(Lkotlinx/corou
HSPLkotlinx/coroutines/CancellableContinuationImpl;->takeState$kotlinx_coroutines_core()Ljava/lang/Object;
HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResume(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResumeImpl(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/CancellableContinuationKt;->disposeOnCancellation(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/DisposableHandle;)V
+HSPLkotlinx/coroutines/CancellableContinuationKt;->getOrCreateCancellableContinuation(Lkotlin/coroutines/Continuation;)Lkotlinx/coroutines/CancellableContinuationImpl;
HSPLkotlinx/coroutines/CancelledContinuation;->(Lkotlin/coroutines/Continuation;Ljava/lang/Throwable;Z)V
HSPLkotlinx/coroutines/ChildContinuation;->(Lkotlinx/coroutines/CancellableContinuationImpl;)V
HSPLkotlinx/coroutines/ChildContinuation;->invoke(Ljava/lang/Throwable;)V
@@ -6057,8 +6059,6 @@ HSPLkotlinx/coroutines/CompletedContinuation;->(Ljava/lang/Object;Lkotlinx
HSPLkotlinx/coroutines/CompletedExceptionally;->(Ljava/lang/Throwable;Z)V
HSPLkotlinx/coroutines/CompletedExceptionally;->getHandled()Z
HSPLkotlinx/coroutines/CompletionHandlerBase;->()V
-HSPLkotlinx/coroutines/CompletionStateKt;->recoverResult(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
-HSPLkotlinx/coroutines/CompletionStateKt;->toState(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
HSPLkotlinx/coroutines/CoroutineContextKt;->newCoroutineContext(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;->()V
HSPLkotlinx/coroutines/CoroutineDispatcher$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
@@ -6077,11 +6077,15 @@ HSPLkotlinx/coroutines/DefaultExecutor;->()V
HSPLkotlinx/coroutines/DefaultExecutor;->getThread()Ljava/lang/Thread;
HSPLkotlinx/coroutines/DefaultExecutor;->isShutdownRequested()Z
HSPLkotlinx/coroutines/DefaultExecutor;->run()V
+HSPLkotlinx/coroutines/DelayKt;->delay(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/DelayKt;->getDelay(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Delay;
HSPLkotlinx/coroutines/DispatchedTask;->(I)V
HSPLkotlinx/coroutines/DispatchedTask;->getExceptionalResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Throwable;
HSPLkotlinx/coroutines/DispatchedTask;->getSuccessfulResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object;
HSPLkotlinx/coroutines/DispatchedTask;->handleFatalException(Ljava/lang/Throwable;Ljava/lang/Throwable;)V
HSPLkotlinx/coroutines/DispatchedTask;->run()V
+HSPLkotlinx/coroutines/DispatchedTaskKt;->isCancellableMode(I)Z
+HSPLkotlinx/coroutines/DispatchedTaskKt;->resume(Lkotlinx/coroutines/DispatchedTask;Lkotlin/coroutines/Continuation;Z)V
HSPLkotlinx/coroutines/DisposeOnCancel;->(Lkotlinx/coroutines/DisposableHandle;)V
HSPLkotlinx/coroutines/Empty;->(Z)V
HSPLkotlinx/coroutines/Empty;->getList()Lkotlinx/coroutines/NodeList;
@@ -6325,11 +6329,6 @@ HSPLkotlinx/coroutines/internal/ScopeCoroutine;->(Lkotlin/coroutines/Corou
HSPLkotlinx/coroutines/internal/ScopeCoroutine;->afterResume(Ljava/lang/Object;)V
HSPLkotlinx/coroutines/internal/ScopeCoroutine;->isScopedCoroutine()Z
HSPLkotlinx/coroutines/internal/Symbol;->(Ljava/lang/String;)V
-HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;IIIILjava/lang/Object;)I
-HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;JJJILjava/lang/Object;)J
-HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;)Ljava/lang/String;
-HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;III)I
-HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;JJJ)J
HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->()V
HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->()V
@@ -6358,7 +6357,6 @@ HSPLkotlinx/coroutines/sync/MutexImpl;->(Z)V
HSPLkotlinx/coroutines/sync/MutexImpl;->lock(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLkotlinx/coroutines/sync/MutexImpl;->tryLock(Ljava/lang/Object;)Z
HSPLkotlinx/coroutines/sync/MutexImpl;->unlock(Ljava/lang/Object;)V
-Landroidx/compose/animation/AndroidFlingSpline$$ExternalSyntheticOutline0;
Landroidx/compose/animation/AndroidFlingSpline$$ExternalSyntheticOutline1;
Landroidx/compose/animation/AndroidFlingSpline$FlingResult$$ExternalSyntheticOutline0;
Landroidx/compose/animation/AndroidFlingSpline$FlingResult;
@@ -6392,7 +6390,6 @@ Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;
Landroidx/compose/animation/core/AnimateAsStateKt;
Landroidx/compose/animation/core/Animation;
Landroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility;
-Landroidx/compose/animation/core/AnimationResult;
Landroidx/compose/animation/core/AnimationScope;
Landroidx/compose/animation/core/AnimationSpec;
Landroidx/compose/animation/core/AnimationState;
@@ -6400,6 +6397,7 @@ Landroidx/compose/animation/core/AnimationVector1D;
Landroidx/compose/animation/core/AnimationVector2D;
Landroidx/compose/animation/core/AnimationVector4D;
Landroidx/compose/animation/core/AnimationVector;
+Landroidx/compose/animation/core/AnimationVectorsKt;
Landroidx/compose/animation/core/Animations;
Landroidx/compose/animation/core/ComplexDouble;
Landroidx/compose/animation/core/ComplexDoubleKt;
@@ -6797,6 +6795,7 @@ Landroidx/compose/foundation/layout/SizeKt$createWrapContentWidthModifier$2;
Landroidx/compose/foundation/layout/SizeKt;
Landroidx/compose/foundation/layout/SizeModifier$measure$1;
Landroidx/compose/foundation/layout/SizeModifier;
+Landroidx/compose/foundation/layout/SpacerKt$$ExternalSyntheticOutline0;
Landroidx/compose/foundation/layout/SpacerKt;
Landroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;
Landroidx/compose/foundation/layout/SpacerMeasurePolicy;
@@ -6815,7 +6814,6 @@ Landroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedW
Landroidx/compose/foundation/layout/WindowInsetsPaddingKt;
Landroidx/compose/foundation/layout/WindowInsetsPadding_androidKt$safeDrawingPadding$$inlined$windowInsetsPadding$1;
Landroidx/compose/foundation/layout/WindowInsetsSides;
-Landroidx/compose/foundation/layout/WindowInsets_androidKt;
Landroidx/compose/foundation/layout/WrapContentModifier$measure$1;
Landroidx/compose/foundation/layout/WrapContentModifier;
Landroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo;
@@ -6961,6 +6959,7 @@ Landroidx/compose/foundation/lazy/layout/DefaultLazyKey;
Landroidx/compose/foundation/lazy/layout/DummyHandle;
Landroidx/compose/foundation/lazy/layout/IntervalHolder;
Landroidx/compose/foundation/lazy/layout/IntervalList;
+Landroidx/compose/foundation/lazy/layout/IntervalListKt;
Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1$invoke$$inlined$onDispose$1;
Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1;
Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;
@@ -6981,7 +6980,6 @@ Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;
Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;
Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt$LazyLayoutPrefetcher$2;
Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt;
-Landroidx/compose/foundation/lazy/layout/Lazy_androidKt;
Landroidx/compose/foundation/lazy/layout/MutableIntervalList;
Landroidx/compose/foundation/lazy/layout/PinnableParent$PinnedItemsHandle;
Landroidx/compose/foundation/lazy/layout/PinnableParent;
@@ -7323,6 +7321,7 @@ Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations
Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;
Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSetIterator;
Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;
Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;
Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;
Landroidx/compose/runtime/internal/ComposableLambda;
@@ -7383,6 +7382,7 @@ Landroidx/compose/runtime/snapshots/SnapshotApplyResult;
Landroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;
Landroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;
Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+Landroidx/compose/runtime/snapshots/SnapshotIdSetKt;
Landroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;
Landroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;
Landroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;
@@ -7423,11 +7423,13 @@ Landroidx/compose/runtime/snapshots/TransparentObserverSnapshot;
Landroidx/compose/ui/geometry/CornerRadius$Companion;
Landroidx/compose/ui/geometry/CornerRadius;
Landroidx/compose/ui/geometry/CornerRadiusKt;
+Landroidx/compose/ui/geometry/GeometryUtilsKt;
Landroidx/compose/ui/geometry/MutableRect;
Landroidx/compose/ui/geometry/Offset$Companion;
Landroidx/compose/ui/geometry/Offset;
Landroidx/compose/ui/geometry/OffsetKt;
Landroidx/compose/ui/geometry/Rect;
+Landroidx/compose/ui/geometry/RectKt;
Landroidx/compose/ui/geometry/RoundRect;
Landroidx/compose/ui/geometry/RoundRectKt;
Landroidx/compose/ui/geometry/Size$Companion;
@@ -7436,30 +7438,31 @@ Landroidx/compose/ui/geometry/SizeKt;
Landroidx/compose/ui/graphics/AndroidCanvas;
Landroidx/compose/ui/graphics/AndroidCanvas_androidKt;
Landroidx/compose/ui/graphics/AndroidImageBitmap;
-Landroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;
Landroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;
Landroidx/compose/ui/graphics/AndroidPaint;
Landroidx/compose/ui/graphics/AndroidPaint_androidKt$WhenMappings;
Landroidx/compose/ui/graphics/AndroidPath;
Landroidx/compose/ui/graphics/AndroidPathEffect;
Landroidx/compose/ui/graphics/AndroidPathMeasure;
-Landroidx/compose/ui/graphics/AndroidShader_androidKt;
Landroidx/compose/ui/graphics/Api26Bitmap;
Landroidx/compose/ui/graphics/BlendMode;
Landroidx/compose/ui/graphics/BlendModeColorFilterHelper;
Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;
Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier;
+Landroidx/compose/ui/graphics/Brush$Companion;
Landroidx/compose/ui/graphics/Brush;
Landroidx/compose/ui/graphics/BrushKt$ShaderBrush$1;
Landroidx/compose/ui/graphics/Canvas$DefaultImpls;
Landroidx/compose/ui/graphics/Canvas;
Landroidx/compose/ui/graphics/CanvasHolder;
+Landroidx/compose/ui/graphics/CanvasKt;
Landroidx/compose/ui/graphics/CanvasUtils;
Landroidx/compose/ui/graphics/CanvasZHelper;
Landroidx/compose/ui/graphics/Color$Companion;
Landroidx/compose/ui/graphics/Color;
Landroidx/compose/ui/graphics/ColorFilter;
Landroidx/compose/ui/graphics/ColorKt;
+Landroidx/compose/ui/graphics/FilterQuality;
Landroidx/compose/ui/graphics/Float16$Companion;
Landroidx/compose/ui/graphics/Float16;
Landroidx/compose/ui/graphics/GraphicsLayerModifierKt;
@@ -7478,8 +7481,6 @@ Landroidx/compose/ui/graphics/Path$DefaultImpls;
Landroidx/compose/ui/graphics/Path;
Landroidx/compose/ui/graphics/PathFillType;
Landroidx/compose/ui/graphics/PathMeasure;
-Landroidx/compose/ui/graphics/PathOperation;
-Landroidx/compose/ui/graphics/RadialGradient;
Landroidx/compose/ui/graphics/RectangleShapeKt$RectangleShape$1;
Landroidx/compose/ui/graphics/RectangleShapeKt;
Landroidx/compose/ui/graphics/RenderEffect;
@@ -7494,7 +7495,6 @@ Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;
Landroidx/compose/ui/graphics/SolidColor;
Landroidx/compose/ui/graphics/StrokeCap;
Landroidx/compose/ui/graphics/StrokeJoin;
-Landroidx/compose/ui/graphics/TileMode;
Landroidx/compose/ui/graphics/TileModeVerificationHelper;
Landroidx/compose/ui/graphics/TransformOrigin$Companion;
Landroidx/compose/ui/graphics/TransformOrigin;
@@ -7504,7 +7504,6 @@ Landroidx/compose/ui/graphics/colorspace/Adaptation;
Landroidx/compose/ui/graphics/colorspace/ColorModel$Companion;
Landroidx/compose/ui/graphics/colorspace/ColorModel;
Landroidx/compose/ui/graphics/colorspace/ColorSpace;
-Landroidx/compose/ui/graphics/colorspace/ColorSpaceKt;
Landroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;
Landroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$2;
Landroidx/compose/ui/graphics/colorspace/ColorSpaces;
@@ -7647,6 +7646,7 @@ Landroidx/compose/ui/graphics/vector/VectorProperty$TrimPathOffset;
Landroidx/compose/ui/graphics/vector/VectorProperty$TrimPathStart;
Landroidx/compose/ui/graphics/vector/VectorProperty;
Landroidx/compose/ui/graphics/vector/compat/AndroidVectorParser;
+Landroidx/compose/ui/graphics/vector/compat/AndroidVectorResources;
Landroidx/compose/ui/graphics/vector/compat/XmlVectorParser_androidKt;
Landroidx/compose/ui/text/AnnotatedString$Range;
Landroidx/compose/ui/text/AnnotatedString;
@@ -7665,7 +7665,6 @@ Landroidx/compose/ui/text/ParagraphStyle;
Landroidx/compose/ui/text/ParagraphStyleKt;
Landroidx/compose/ui/text/Placeholder;
Landroidx/compose/ui/text/PlaceholderVerticalAlign;
-Landroidx/compose/ui/text/PlatformSpanStyle;
Landroidx/compose/ui/text/SaversKt$AnnotatedStringSaver$1;
Landroidx/compose/ui/text/SaversKt$AnnotatedStringSaver$2;
Landroidx/compose/ui/text/SaversKt$AnnotationRangeListSaver$1;
@@ -7722,6 +7721,7 @@ Landroidx/compose/ui/text/android/LayoutIntrinsics$minIntrinsicWidth$2;
Landroidx/compose/ui/text/android/LayoutIntrinsics;
Landroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0;
Landroidx/compose/ui/text/android/Paint29;
+Landroidx/compose/ui/text/android/PaintExtensionsKt;
Landroidx/compose/ui/text/android/StaticLayoutFactory23;
Landroidx/compose/ui/text/android/StaticLayoutFactory26;
Landroidx/compose/ui/text/android/StaticLayoutFactory28;
@@ -7747,7 +7747,6 @@ Landroidx/compose/ui/text/caches/LruCache;
Landroidx/compose/ui/text/caches/SimpleArrayMap;
Landroidx/compose/ui/text/font/AndroidFontLoader;
Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor;
-Landroidx/compose/ui/text/font/AndroidFontUtils_androidKt;
Landroidx/compose/ui/text/font/AsyncTypefaceCache;
Landroidx/compose/ui/text/font/DefaultFontFamily;
Landroidx/compose/ui/text/font/Font$ResourceLoader;
@@ -7758,7 +7757,6 @@ Landroidx/compose/ui/text/font/FontFamilyResolverImpl$createDefaultTypeface$1;
Landroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;
Landroidx/compose/ui/text/font/FontFamilyResolverImpl;
Landroidx/compose/ui/text/font/FontFamilyResolverKt;
-Landroidx/compose/ui/text/font/FontFamilyResolver_androidKt;
Landroidx/compose/ui/text/font/FontListFontFamily;
Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$special$$inlined$CoroutineExceptionHandler$1;
Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;
@@ -7774,8 +7772,8 @@ Landroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion$Default$1;
Landroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion;
Landroidx/compose/ui/text/font/PlatformResolveInterceptor;
Landroidx/compose/ui/text/font/PlatformTypefaces;
-Landroidx/compose/ui/text/font/PlatformTypefacesApi28;
Landroidx/compose/ui/text/font/PlatformTypefacesApi;
+Landroidx/compose/ui/text/font/PlatformTypefacesKt;
Landroidx/compose/ui/text/font/SystemFontFamily;
Landroidx/compose/ui/text/font/TypefaceRequest;
Landroidx/compose/ui/text/font/TypefaceRequestCache$runCached$currentTypefaceResult$1;
@@ -7793,7 +7791,6 @@ Landroidx/compose/ui/text/input/PlatformTextInputService;
Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1;
Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2;
Landroidx/compose/ui/text/input/TextFieldValue;
-Landroidx/compose/ui/text/input/TextFieldValueKt;
Landroidx/compose/ui/text/input/TextInputService;
Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;
Landroidx/compose/ui/text/input/TextInputServiceAndroid$baseInputConnection$2;
@@ -7852,6 +7849,7 @@ Landroidx/compose/ui/unit/TextUnitType;
Landroidx/compose/ui/unit/Velocity$Companion;
Landroidx/compose/ui/unit/Velocity;
Landroidx/compose/ui/unit/VelocityKt;
+Landroidx/compose/ui/util/MathHelpersKt;
Landroidx/navigation/ActivityNavigator$hostActivity$1;
Landroidx/navigation/ActivityNavigator;
Landroidx/navigation/FloatingWindow;
diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt
index 74113a1d7..75a243ee4 100644
--- a/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt
+++ b/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt
@@ -16,13 +16,9 @@
package com.google.samples.apps.nowinandroid.navigation
-import android.app.Activity
-import android.view.View
import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
-import androidx.compose.ui.platform.LocalView
-import androidx.core.view.doOnPreDraw
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.rememberNavController
@@ -67,23 +63,4 @@ fun NiaNavHost(
onBackClick = { navController.popBackStack() }
)
}
-// Reporting the app fully drawn to get accurate TTFD readings for the baseline profile.
-// https://developer.android.com/topic/performance/vitals/launch-time#retrieve-TTFD
- ReportFullyDrawn(ForYouDestination.route)
-}
-
-/**
- * Calling [Activity#reportFullyDrawn] in compose UI.
- */
-@Composable
-private fun ReportFullyDrawn(destination: String) {
- // Holding on to the local view and calling `reportFullyDrawn` in an `onPreDraw` listener.
- // Compose currently doesn't offer a way to otherwise report fully drawn,
- // so this is a viable approach.
- val localView: View = LocalView.current
- (localView.context as? Activity)?.run {
- localView.doOnPreDraw {
- reportFullyDrawn()
- }
- }
}
diff --git a/app/src/main/res/drawable-v24/ic_launcher_background.xml b/app/src/main/res/drawable-v24/ic_launcher_background.xml
new file mode 100644
index 000000000..36fe340e6
--- /dev/null
+++ b/app/src/main/res/drawable-v24/ic_launcher_background.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 000000000..985a5c10b
--- /dev/null
+++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
index ee103766b..28878a729 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -17,4 +17,5 @@
+
\ No newline at end of file
diff --git a/build-logic/README.md b/build-logic/README.md
index 90ccccc74..45fd95f91 100644
--- a/build-logic/README.md
+++ b/build-logic/README.md
@@ -12,7 +12,7 @@ By setting up convention plugins in `build-logic`, we can avoid duplicated build
messy `subproject` configurations, without the pitfalls of the `buildSrc` directory.
`build-logic` is an included build, as configured in the root
-[`settings.gradle`](../settings.gradle).
+[`settings.gradle.kts`](../settings.gradle.kts).
Inside `build-logic` is a `convention` module, which defines a set of plugins that all normal
modules can use to configure themselves.
diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt
index c3bf62744..f9aedcd73 100644
--- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt
+++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt
@@ -49,13 +49,13 @@ fun Project.configureKotlinAndroid(
allWarningsAsErrors = properties["warningsAsErrors"] as? Boolean ?: false
freeCompilerArgs = freeCompilerArgs + listOf(
- "-Xopt-in=kotlin.RequiresOptIn",
+ "-opt-in=kotlin.RequiresOptIn",
// Enable experimental coroutines APIs, including Flow
- "-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
- "-Xopt-in=kotlinx.coroutines.FlowPreview",
- "-Xopt-in=kotlin.Experimental",
+ "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
+ "-opt-in=kotlinx.coroutines.FlowPreview",
+ "-opt-in=kotlin.Experimental",
// Enable experimental kotlinx serialization APIs
- "-Xopt-in=kotlinx.serialization.ExperimentalSerializationApi"
+ "-opt-in=kotlinx.serialization.ExperimentalSerializationApi"
)
// Set JVM target to 1.8
diff --git a/core-database/build.gradle.kts b/core-database/build.gradle.kts
index 0461f28f2..2f15e958a 100644
--- a/core-database/build.gradle.kts
+++ b/core-database/build.gradle.kts
@@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
+@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id("nowinandroid.android.library")
id("nowinandroid.android.library.jacoco")
diff --git a/core-datastore/build.gradle.kts b/core-datastore/build.gradle.kts
index 2ccc9ade1..52d7ebc7b 100644
--- a/core-datastore/build.gradle.kts
+++ b/core-datastore/build.gradle.kts
@@ -19,6 +19,8 @@ import com.google.protobuf.gradle.generateProtoTasks
import com.google.protobuf.gradle.protobuf
import com.google.protobuf.gradle.protoc
+// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
+@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id("nowinandroid.android.library")
id("nowinandroid.android.library.jacoco")
diff --git a/core-model/build.gradle.kts b/core-model/build.gradle.kts
index bda0c4037..a413b36c4 100644
--- a/core-model/build.gradle.kts
+++ b/core-model/build.gradle.kts
@@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
+@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id("nowinandroid.android.library")
id("nowinandroid.android.library.jacoco")
diff --git a/core-navigation/build.gradle.kts b/core-navigation/build.gradle.kts
index c9606b6ce..d9449babc 100644
--- a/core-navigation/build.gradle.kts
+++ b/core-navigation/build.gradle.kts
@@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
+@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id("nowinandroid.android.library")
id("nowinandroid.android.library.jacoco")
diff --git a/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt b/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt
index 4242f2f33..d31f988ce 100644
--- a/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt
+++ b/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt
@@ -141,7 +141,6 @@ fun NewsResourceHeaderImage(
},
modifier = Modifier
.fillMaxWidth()
- .clip(RoundedCornerShape(topEnd = 24.dp, topStart = 24.dp))
.height(180.dp),
contentScale = ContentScale.Crop,
model = headerImageUrl,
diff --git a/docs/ArchitectureLearningJourney.md b/docs/ArchitectureLearningJourney.md
index 8969a3349..1a5112058 100644
--- a/docs/ArchitectureLearningJourney.md
+++ b/docs/ArchitectureLearningJourney.md
@@ -47,7 +47,7 @@ The following diagram shows the events which occur and how data flows from the r

-Here's what's happening in each step. The easiest way to find the associated code is to load the project into Android Studio and search for the text in the Code column (handy shortcut: tap SHIFT twice).
+Here's what's happening in each step. The easiest way to find the associated code is to load the project into Android Studio and search for the text in the Code column (handy shortcut: tap ⇧ SHIFT twice).
@@ -176,7 +176,7 @@ Whenever the list of authors changes (for example, when a new author is added),
To write data, the repository provides suspend functions. It is up to the caller to ensure that their execution is suitably scoped.
-_Example: Follow a topic _
+_Example: Follow a topic_
Simply call `TopicsRepository.setFollowedTopicId` with the ID of the topic which the user wishes to follow.
@@ -276,18 +276,18 @@ View models receive streams of data as cold [flows](https://kotlin.github.io/kot
**Example: Displaying followed topics and authors**
-The `FollowingViewModel` exposes `uiState` as a `StateFlow`. This hot flow is created by combining four data streams:
+The `InterestsViewModel` exposes `uiState` as a `StateFlow`. This hot flow is created by combining four data streams:
-* List of authors (getAuthorsStream)
+* List of authors (`getAuthorsStream`)
* List of author IDs which the current user is following
* List of topics
* List of topic IDs which the current user is following
The list of `Author`s is mapped to a new list of `FollowableAuthor`s. `FollowableAuthor` is a wrapper for `Author` which also indicates whether the current user is following that author. The same transformation is applied for the list of `Topic`s.
-The two new lists are used to create a `FollowingUiState.Interests` state which is exposed to the UI.
+The two new lists are used to create a `InterestsUiState.Interests` state which is exposed to the UI.
### Processing user interactions
@@ -296,7 +296,7 @@ User actions are communicated from UI elements to view models using regular meth
**Example: Following a topic**
-The `FollowingScreen` takes a lambda expression named `followTopic` which is supplied from `FollowingViewModel.followTopic`. Each time the user taps on a topic to follow this method is called. The view model then processes this action by informing the topics repository.
+The `InterestsScreen` takes a lambda expression named `followTopic` which is supplied from `InterestsViewModel.followTopic`. Each time the user taps on a topic to follow this method is called. The view model then processes this action by informing the topics repository.
## Further reading
diff --git a/feature-author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt b/feature-author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt
index 69225e7a3..75df35202 100644
--- a/feature-author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt
+++ b/feature-author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt
@@ -155,10 +155,10 @@ private fun AuthorHeader(author: Author) {
) {
AsyncImage(
modifier = Modifier
+ .padding(bottom = 12.dp)
.size(216.dp)
.align(Alignment.CenterHorizontally)
- .clip(CircleShape)
- .padding(bottom = 12.dp),
+ .clip(CircleShape),
contentScale = ContentScale.Crop,
model = author.imageUrl,
contentDescription = "Author profile picture",
@@ -216,6 +216,7 @@ private fun AuthorToolbar(
}
val selected = uiState.isFollowed
NiaFilterChip(
+ modifier = Modifier.padding(horizontal = 16.dp),
checked = selected,
onCheckedChange = onFollowClick,
) {
diff --git a/feature-foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt b/feature-foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt
index a2e52bdb4..378b05124 100644
--- a/feature-foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt
+++ b/feature-foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt
@@ -67,8 +67,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight)
),
- interestsSelectionState = ForYouInterestsSelectionState.Loading,
- feedState = ForYouFeedState.Loading,
+ interestsSelectionState = ForYouInterestsSelectionUiState.Loading,
+ feedState = ForYouFeedUiState.Loading,
onAuthorCheckedChanged = { _, _ -> },
onTopicCheckedChanged = { _, _ -> },
saveFollowedTopics = {},
@@ -92,7 +92,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight)
),
- interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection(
+ interestsSelectionState =
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -153,7 +154,7 @@ class ForYouScreenTest {
),
)
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList()
),
onAuthorCheckedChanged = { _, _ -> },
@@ -200,7 +201,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight)
),
- interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection(
+ interestsSelectionState =
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -261,7 +263,7 @@ class ForYouScreenTest {
),
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList()
),
onAuthorCheckedChanged = { _, _ -> },
@@ -314,7 +316,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight)
),
- interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection(
+ interestsSelectionState =
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -375,7 +378,7 @@ class ForYouScreenTest {
),
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList()
),
onAuthorCheckedChanged = { _, _ -> },
@@ -428,7 +431,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight)
),
- interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection(
+ interestsSelectionState =
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -489,7 +493,7 @@ class ForYouScreenTest {
),
),
),
- feedState = ForYouFeedState.Loading,
+ feedState = ForYouFeedUiState.Loading,
onAuthorCheckedChanged = { _, _ -> },
onTopicCheckedChanged = { _, _ -> },
saveFollowedTopics = {},
@@ -523,8 +527,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight)
),
- interestsSelectionState = ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Loading,
+ interestsSelectionState = ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Loading,
onAuthorCheckedChanged = { _, _ -> },
onTopicCheckedChanged = { _, _ -> },
saveFollowedTopics = {},
@@ -643,8 +647,8 @@ class ForYouScreenTest {
ForYouScreen(
windowSizeClass = windowSizeClass,
- interestsSelectionState = ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Success(
+ interestsSelectionState = ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Success(
feed = saveableNewsResources
),
onAuthorCheckedChanged = { _, _ -> },
@@ -669,7 +673,10 @@ class ForYouScreenTest {
)
val firstFeedItem = composeTestRule
- .onNodeWithText("Thanks for helping us reach 1M YouTube Subscribers", substring = true)
+ .onNodeWithText(
+ "Thanks for helping us reach 1M YouTube Subscribers",
+ substring = true
+ )
.assertHasClickAction()
.fetchSemanticsNode()
diff --git a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/AuthorsCarousel.kt b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/AuthorsCarousel.kt
index f3ec15b93..398a0c616 100644
--- a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/AuthorsCarousel.kt
+++ b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/AuthorsCarousel.kt
@@ -16,6 +16,7 @@
package com.google.samples.apps.nowinandroid.feature.foryou
+import androidx.compose.foundation.background
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -30,7 +31,10 @@ import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.selection.toggleable
import androidx.compose.foundation.shape.CircleShape
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Person
import androidx.compose.material.ripple.rememberRipple
+import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
@@ -104,15 +108,29 @@ fun AuthorItem(
stateDescription = "$followDescription ${author.name}"
}
) {
- Box(modifier = Modifier.fillMaxWidth()) {
- AsyncImage(
- modifier = Modifier
- .size(48.dp)
- .clip(CircleShape),
- model = author.imageUrl,
- contentScale = ContentScale.Fit,
- contentDescription = null
- )
+ Box(
+ modifier = Modifier.fillMaxWidth(),
+ contentAlignment = Alignment.Center,
+ ) {
+ val authorImageModifier = Modifier
+ .size(48.dp)
+ .clip(CircleShape)
+ if (author.imageUrl.isEmpty()) {
+ Icon(
+ modifier = authorImageModifier
+ .background(MaterialTheme.colorScheme.surface)
+ .padding(4.dp),
+ imageVector = Icons.Filled.Person,
+ contentDescription = null // decorative image
+ )
+ } else {
+ AsyncImage(
+ modifier = authorImageModifier,
+ model = author.imageUrl,
+ contentScale = ContentScale.Fit,
+ contentDescription = null
+ )
+ }
FollowButton(
following = following,
backgroundColor = MaterialTheme.colorScheme.surface,
diff --git a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouFeedState.kt b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouFeedUiState.kt
similarity index 91%
rename from feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouFeedState.kt
rename to feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouFeedUiState.kt
index 3d19cc5a3..c6c6c345c 100644
--- a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouFeedState.kt
+++ b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouFeedUiState.kt
@@ -21,11 +21,11 @@ import com.google.samples.apps.nowinandroid.core.model.data.SaveableNewsResource
/**
* A sealed hierarchy describing the state of the feed on the for you screen.
*/
-sealed interface ForYouFeedState {
+sealed interface ForYouFeedUiState {
/**
* The feed is still loading.
*/
- object Loading : ForYouFeedState
+ object Loading : ForYouFeedUiState
/**
* The feed is loaded with the given list of news resources.
@@ -35,5 +35,5 @@ sealed interface ForYouFeedState {
* The list of news resources contained in this [PopulatedFeed].
*/
val feed: List
- ) : ForYouFeedState
+ ) : ForYouFeedUiState
}
diff --git a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouInterestsSelectionState.kt b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouInterestsSelectionUiState.kt
similarity index 87%
rename from feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouInterestsSelectionState.kt
rename to feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouInterestsSelectionUiState.kt
index bca006d5a..bce65611c 100644
--- a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouInterestsSelectionState.kt
+++ b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouInterestsSelectionUiState.kt
@@ -22,16 +22,16 @@ import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
/**
* A sealed hierarchy describing the interests selection state for the for you screen.
*/
-sealed interface ForYouInterestsSelectionState {
+sealed interface ForYouInterestsSelectionUiState {
/**
* The interests selection state is loading.
*/
- object Loading : ForYouInterestsSelectionState
+ object Loading : ForYouInterestsSelectionUiState
/**
* There is no interests selection state.
*/
- object NoInterestsSelection : ForYouInterestsSelectionState
+ object NoInterestsSelection : ForYouInterestsSelectionUiState
/**
* There is a interests selection state, with the given lists of topics and authors.
@@ -39,7 +39,7 @@ sealed interface ForYouInterestsSelectionState {
data class WithInterestsSelection(
val topics: List,
val authors: List
- ) : ForYouInterestsSelectionState {
+ ) : ForYouInterestsSelectionUiState {
/**
* True if the current in-progress selection can be saved.
*/
diff --git a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt
index 1a03d2751..42e798c39 100644
--- a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt
+++ b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt
@@ -50,8 +50,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Search
import androidx.compose.material.icons.outlined.AccountCircle
-import androidx.compose.material3.Button
-import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
@@ -90,6 +88,7 @@ import com.google.samples.apps.nowinandroid.core.model.data.SaveableNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.Topic
import com.google.samples.apps.nowinandroid.core.ui.LoadingWheel
import com.google.samples.apps.nowinandroid.core.ui.NewsResourceCardExpanded
+import com.google.samples.apps.nowinandroid.core.ui.component.NiaFilledButton
import com.google.samples.apps.nowinandroid.core.ui.component.NiaGradientBackground
import com.google.samples.apps.nowinandroid.core.ui.component.NiaToggleButton
import com.google.samples.apps.nowinandroid.core.ui.component.NiaTopAppBar
@@ -123,8 +122,8 @@ fun ForYouRoute(
@Composable
fun ForYouScreen(
windowSizeClass: WindowSizeClass,
- interestsSelectionState: ForYouInterestsSelectionState,
- feedState: ForYouFeedState,
+ interestsSelectionState: ForYouInterestsSelectionUiState,
+ feedState: ForYouFeedUiState,
onTopicCheckedChanged: (String, Boolean) -> Unit,
onAuthorCheckedChanged: (String, Boolean) -> Unit,
saveFollowedTopics: () -> Unit,
@@ -183,7 +182,7 @@ fun ForYouScreen(
// Avoid showing a second loading wheel if we already are for the interests
// selection
showLoadingUIIfLoading =
- interestsSelectionState !is ForYouInterestsSelectionState.Loading,
+ interestsSelectionState !is ForYouInterestsSelectionUiState.Loading,
numberOfColumns = numberOfColumns,
onNewsResourcesCheckedChanged = onNewsResourcesCheckedChanged
)
@@ -212,14 +211,14 @@ fun ForYouScreen(
* states.
*/
private fun LazyListScope.InterestsSelection(
- interestsSelectionState: ForYouInterestsSelectionState,
+ interestsSelectionState: ForYouInterestsSelectionUiState,
showLoadingUIIfLoading: Boolean,
onAuthorCheckedChanged: (String, Boolean) -> Unit,
onTopicCheckedChanged: (String, Boolean) -> Unit,
saveFollowedTopics: () -> Unit
) {
when (interestsSelectionState) {
- ForYouInterestsSelectionState.Loading -> {
+ ForYouInterestsSelectionUiState.Loading -> {
if (showLoadingUIIfLoading) {
item {
LoadingWheel(
@@ -231,8 +230,8 @@ private fun LazyListScope.InterestsSelection(
}
}
}
- ForYouInterestsSelectionState.NoInterestsSelection -> Unit
- is ForYouInterestsSelectionState.WithInterestsSelection -> {
+ ForYouInterestsSelectionUiState.NoInterestsSelection -> Unit
+ is ForYouInterestsSelectionUiState.WithInterestsSelection -> {
item {
Text(
text = stringResource(R.string.onboarding_guidance_title),
@@ -275,19 +274,15 @@ private fun LazyListScope.InterestsSelection(
horizontalArrangement = Arrangement.Center,
modifier = Modifier.fillMaxWidth()
) {
- Button(
+ NiaFilledButton(
onClick = saveFollowedTopics,
enabled = interestsSelectionState.canSaveInterests,
modifier = Modifier
.padding(horizontal = 40.dp)
- .width(364.dp),
- colors = ButtonDefaults.buttonColors(
- containerColor = MaterialTheme.colorScheme.onBackground
- )
+ .width(364.dp)
) {
Text(
- text = stringResource(R.string.done),
- color = MaterialTheme.colorScheme.onPrimary
+ text = stringResource(R.string.done)
)
}
}
@@ -298,7 +293,7 @@ private fun LazyListScope.InterestsSelection(
@Composable
private fun TopicSelection(
- interestsSelectionState: ForYouInterestsSelectionState.WithInterestsSelection,
+ interestsSelectionState: ForYouInterestsSelectionUiState.WithInterestsSelection,
onTopicCheckedChanged: (String, Boolean) -> Unit,
modifier: Modifier = Modifier
) {
@@ -412,13 +407,13 @@ fun TopicIcon(
* states.
*/
private fun LazyListScope.Feed(
- feedState: ForYouFeedState,
+ feedState: ForYouFeedUiState,
showLoadingUIIfLoading: Boolean,
@IntRange(from = 1) numberOfColumns: Int,
onNewsResourcesCheckedChanged: (String, Boolean) -> Unit
) {
when (feedState) {
- ForYouFeedState.Loading -> {
+ ForYouFeedUiState.Loading -> {
if (showLoadingUIIfLoading) {
item {
LoadingWheel(
@@ -430,7 +425,7 @@ private fun LazyListScope.Feed(
}
}
}
- is ForYouFeedState.Success -> {
+ is ForYouFeedUiState.Success -> {
items(
feedState.feed.chunked(numberOfColumns)
) { saveableNewsResources ->
@@ -496,8 +491,8 @@ fun ForYouScreenLoading() {
NiaTheme {
ForYouScreen(
windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(maxWidth, maxHeight)),
- interestsSelectionState = ForYouInterestsSelectionState.Loading,
- feedState = ForYouFeedState.Loading,
+ interestsSelectionState = ForYouInterestsSelectionUiState.Loading,
+ feedState = ForYouFeedUiState.Loading,
onTopicCheckedChanged = { _, _ -> },
onAuthorCheckedChanged = { _, _ -> },
saveFollowedTopics = {},
@@ -517,7 +512,7 @@ fun ForYouScreenTopicSelection() {
NiaTheme {
ForYouScreen(
windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(maxWidth, maxHeight)),
- interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection(
+ interestsSelectionState = ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -589,7 +584,7 @@ fun ForYouScreenTopicSelection() {
)
)
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = saveableNewsResource,
),
onAuthorCheckedChanged = { _, _ -> },
@@ -611,8 +606,8 @@ fun PopulatedFeed() {
NiaTheme {
ForYouScreen(
windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(maxWidth, maxHeight)),
- interestsSelectionState = ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Success(
+ interestsSelectionState = ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Success(
feed = saveableNewsResource
),
onTopicCheckedChanged = { _, _ -> },
diff --git a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt
index 34ed142b9..f7e36c430 100644
--- a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt
+++ b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt
@@ -103,7 +103,7 @@ class ForYouViewModel @Inject constructor(
mutableStateOf>(emptySet())
}
- val feedState: StateFlow =
+ val feedState: StateFlow =
combine(
followedInterestsState,
snapshotFlow { inProgressTopicSelection },
@@ -114,7 +114,7 @@ class ForYouViewModel @Inject constructor(
when (followedInterestsUserState) {
// If we don't know the current selection state, emit loading.
- Unknown -> flowOf(ForYouFeedState.Loading)
+ Unknown -> flowOf(ForYouFeedUiState.Loading)
// If the user has followed topics, use those followed topics to populate the feed
is FollowedInterests -> {
newsRepository.getNewsResourcesStream(
@@ -126,7 +126,7 @@ class ForYouViewModel @Inject constructor(
// on the in-progress interests selections, if there are any.
None -> {
if (inProgressTopicSelection.isEmpty() && inProgressAuthorSelection.isEmpty()) {
- flowOf(ForYouFeedState.Success(emptyList()))
+ flowOf(ForYouFeedUiState.Success(emptyList()))
} else {
newsRepository.getNewsResourcesStream(
filterTopicIds = inProgressTopicSelection,
@@ -143,10 +143,10 @@ class ForYouViewModel @Inject constructor(
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5_000),
- initialValue = ForYouFeedState.Loading
+ initialValue = ForYouFeedUiState.Loading
)
- val interestsSelectionState: StateFlow =
+ val interestsSelectionState: StateFlow =
combine(
followedInterestsState,
topicsRepository.getTopicsStream(),
@@ -157,8 +157,8 @@ class ForYouViewModel @Inject constructor(
inProgressAuthorSelection ->
when (followedInterestsUserState) {
- Unknown -> ForYouInterestsSelectionState.Loading
- is FollowedInterests -> ForYouInterestsSelectionState.NoInterestsSelection
+ Unknown -> ForYouInterestsSelectionUiState.Loading
+ is FollowedInterests -> ForYouInterestsSelectionUiState.NoInterestsSelection
None -> {
val topics = availableTopics.map { topic ->
FollowableTopic(
@@ -174,9 +174,9 @@ class ForYouViewModel @Inject constructor(
}
if (topics.isEmpty() && authors.isEmpty()) {
- ForYouInterestsSelectionState.Loading
+ ForYouInterestsSelectionUiState.Loading
} else {
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = topics,
authors = authors
)
@@ -187,7 +187,7 @@ class ForYouViewModel @Inject constructor(
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5_000),
- initialValue = ForYouInterestsSelectionState.Loading
+ initialValue = ForYouInterestsSelectionUiState.Loading
)
fun updateTopicSelection(topicId: String, isChecked: Boolean) {
@@ -245,7 +245,7 @@ class ForYouViewModel @Inject constructor(
private fun Flow>.mapToFeedState(
savedNewsResources: Set
-): Flow =
+): Flow =
filterNot { it.isEmpty() }
.map { newsResources ->
newsResources.map { newsResource ->
@@ -255,5 +255,5 @@ private fun Flow>.mapToFeedState(
)
}
}
- .map, ForYouFeedState>(ForYouFeedState::Success)
- .onStart { emit(ForYouFeedState.Loading) }
+ .map, ForYouFeedUiState>(ForYouFeedUiState::Success)
+ .onStart { emit(ForYouFeedUiState.Loading) }
diff --git a/feature-foryou/src/test/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt b/feature-foryou/src/test/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt
index 87412f1f3..dffe9c40b 100644
--- a/feature-foryou/src/test/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt
+++ b/feature-foryou/src/test/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt
@@ -58,12 +58,12 @@ class ForYouViewModelTest {
}
/**
- * A pairing of [ForYouInterestsSelectionState] and [ForYouFeedState] for ease of testing
+ * A pairing of [ForYouInterestsSelectionUiState] and [ForYouFeedUiState] for ease of testing
* state updates as a single flow.
*/
private data class ForYouUiState(
- val interestsSelectionState: ForYouInterestsSelectionState,
- val feedState: ForYouFeedState,
+ val interestsSelectionState: ForYouInterestsSelectionUiState,
+ val feedState: ForYouFeedUiState,
)
private val ForYouViewModel.uiState
@@ -79,8 +79,8 @@ class ForYouViewModelTest {
viewModel.uiState.test {
assertEquals(
ForYouUiState(
- ForYouInterestsSelectionState.Loading,
- ForYouFeedState.Loading
+ ForYouInterestsSelectionUiState.Loading,
+ ForYouFeedUiState.Loading
),
awaitItem()
)
@@ -93,8 +93,8 @@ class ForYouViewModelTest {
viewModel.uiState.test {
assertEquals(
ForYouUiState(
- ForYouInterestsSelectionState.Loading,
- ForYouFeedState.Loading
+ ForYouInterestsSelectionUiState.Loading,
+ ForYouFeedUiState.Loading
),
awaitItem()
)
@@ -109,8 +109,8 @@ class ForYouViewModelTest {
viewModel.uiState.test {
assertEquals(
ForYouUiState(
- ForYouInterestsSelectionState.Loading,
- ForYouFeedState.Loading
+ ForYouInterestsSelectionUiState.Loading,
+ ForYouFeedUiState.Loading
),
awaitItem()
)
@@ -125,8 +125,8 @@ class ForYouViewModelTest {
viewModel.uiState.test {
assertEquals(
ForYouUiState(
- ForYouInterestsSelectionState.Loading,
- ForYouFeedState.Loading
+ ForYouInterestsSelectionUiState.Loading,
+ ForYouFeedUiState.Loading
),
awaitItem()
)
@@ -141,8 +141,8 @@ class ForYouViewModelTest {
viewModel.uiState.test {
assertEquals(
ForYouUiState(
- ForYouInterestsSelectionState.Loading,
- ForYouFeedState.Loading
+ ForYouInterestsSelectionUiState.Loading,
+ ForYouFeedUiState.Loading
),
awaitItem()
)
@@ -166,7 +166,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -238,7 +238,7 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList()
)
),
@@ -263,7 +263,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -335,7 +335,7 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList()
)
),
@@ -359,8 +359,8 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Loading
+ ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Loading
),
awaitItem()
)
@@ -370,8 +370,8 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Success(
+ ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Success(
feed = sampleNewsResources.map {
SaveableNewsResource(
newsResource = it,
@@ -400,8 +400,8 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Loading
+ ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Loading
),
awaitItem()
)
@@ -411,8 +411,8 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Success(
+ ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Success(
feed = sampleNewsResources.map {
SaveableNewsResource(
newsResource = it,
@@ -445,7 +445,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -517,7 +517,7 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList(),
)
),
@@ -526,7 +526,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -598,14 +598,14 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Loading
+ feedState = ForYouFeedUiState.Loading
),
awaitItem()
)
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -677,7 +677,7 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = listOf(
SaveableNewsResource(
newsResource = sampleNewsResources[1],
@@ -714,7 +714,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -786,7 +786,7 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList(),
)
),
@@ -795,7 +795,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -867,14 +867,14 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Loading
+ feedState = ForYouFeedUiState.Loading
),
awaitItem()
)
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -946,7 +946,7 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = listOf(
SaveableNewsResource(
newsResource = sampleNewsResources[1],
@@ -981,7 +981,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -1053,7 +1053,7 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList()
)
),
@@ -1079,7 +1079,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -1151,7 +1151,7 @@ class ForYouViewModelTest {
)
),
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList()
)
),
@@ -1181,8 +1181,8 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Success(
+ ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Success(
feed = listOf(
SaveableNewsResource(
newsResource = sampleNewsResources[1],
@@ -1223,8 +1223,8 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Success(
+ ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Success(
feed = listOf(
SaveableNewsResource(
newsResource = sampleNewsResources[0],
@@ -1262,8 +1262,8 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Success(
+ ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Success(
feed = listOf(
SaveableNewsResource(
newsResource = sampleNewsResources[1],
@@ -1305,7 +1305,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -1377,7 +1377,7 @@ class ForYouViewModelTest {
)
)
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList()
)
),
@@ -1409,7 +1409,7 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.WithInterestsSelection(
+ ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf(
FollowableTopic(
topic = Topic(
@@ -1481,7 +1481,7 @@ class ForYouViewModelTest {
)
)
),
- feedState = ForYouFeedState.Success(
+ feedState = ForYouFeedUiState.Success(
feed = emptyList()
)
),
@@ -1506,8 +1506,8 @@ class ForYouViewModelTest {
assertEquals(
ForYouUiState(
interestsSelectionState =
- ForYouInterestsSelectionState.NoInterestsSelection,
- feedState = ForYouFeedState.Success(
+ ForYouInterestsSelectionUiState.NoInterestsSelection,
+ feedState = ForYouFeedUiState.Success(
feed = listOf(
SaveableNewsResource(
newsResource = sampleNewsResources[1],
diff --git a/feature-interests/src/main/java/com/google/samples/apps/nowinandroid/feature/interests/InterestsItem.kt b/feature-interests/src/main/java/com/google/samples/apps/nowinandroid/feature/interests/InterestsItem.kt
index b9c2afadd..ca1b03c71 100644
--- a/feature-interests/src/main/java/com/google/samples/apps/nowinandroid/feature/interests/InterestsItem.kt
+++ b/feature-interests/src/main/java/com/google/samples/apps/nowinandroid/feature/interests/InterestsItem.kt
@@ -16,6 +16,7 @@
package com.google.samples.apps.nowinandroid.feature.interests
+import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@@ -23,8 +24,8 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
-import androidx.compose.material.icons.Icons.Filled
-import androidx.compose.material.icons.filled.Android
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Person
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
@@ -32,7 +33,6 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
@@ -105,10 +105,11 @@ private fun InterestContent(name: String, description: String, modifier: Modifie
private fun InterestsIcon(topicImageUrl: String, modifier: Modifier = Modifier) {
if (topicImageUrl.isEmpty()) {
Icon(
- imageVector = Filled.Android,
- tint = Color.Magenta,
- contentDescription = null,
modifier = modifier
+ .background(MaterialTheme.colorScheme.surface)
+ .padding(4.dp),
+ imageVector = Icons.Filled.Person,
+ contentDescription = null, // decorative image
)
} else {
AsyncImage(
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 03d42bbda..101950284 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,20 +1,20 @@
[versions]
-accompanist = "0.21.4-beta"
+accompanist = "0.24.8-beta"
androidDesugarJdkLibs = "1.1.5"
androidGradlePlugin = "7.1.2"
androidxActivity = "1.4.0"
androidxAppCompat = "1.3.0"
-androidxCompose = "1.2.0-alpha08"
-androidxComposeMaterial3 = "1.0.0-alpha10"
+androidxCompose = "1.2.0-beta01"
+androidxComposeMaterial3 = "1.0.0-alpha11"
androidxCore = "1.7.0"
androidxCustomView = "1.0.0-alpha01"
androidxDataStore = "1.0.0"
androidxEspresso = "3.3.0"
-androidxHiltNavigationCompose = "1.0.0-rc01"
+androidxHiltNavigationCompose = "1.0.0"
androidxLifecycle = "2.5.0-beta01"
-androidxMacroBenchmark = "1.1.0-rc01"
+androidxMacroBenchmark = "1.1.0-rc02"
androidxNavigation = "2.4.0-rc01"
-androidxProfileinstaller = "1.2.0-alpha02"
+androidxProfileinstaller = "1.2.0-beta01"
androidxSavedState = "1.1.0"
androidxStartup = "1.1.1"
androidxWindowManager = "1.0.0"
@@ -27,12 +27,12 @@ hilt = "2.41"
hiltExt = "1.0.0"
jacoco = "0.8.7"
junit4 = "4.13"
-kotlin = "1.6.20"
+kotlin = "1.6.21"
kotlinxCoroutines = "1.6.0"
kotlinxCoroutinesTest = "1.6.0"
kotlinxDatetime = "0.3.1"
kotlinxSerializationJson = "1.3.1"
-ksp = "1.6.20-1.0.5"
+ksp = "1.6.21-1.0.5"
ktlint = "0.43.0"
material3 = "1.5.0-alpha05"
okhttp = "4.9.3"