Merge branch 'main' into fix/author-item-padding

pull/19/head
Simon Marquis 3 years ago committed by GitHub
commit 26984d5192
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -9,11 +9,9 @@ Please fill out either the individual or corporate Contributor License Agreement
(CLA). (CLA).
* If you are an individual writing original source code and you're sure you * 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] own the intellectual property, then you'll need to sign an [individual CLA](https://developers.google.com/open-source/cla/individual).
(https://developers.google.com/open-source/cla/individual).
* If you work for a company that wants to allow you to contribute your work, * If you work for a company that wants to allow you to contribute your work,
then you'll need to sign a [corporate CLA] then you'll need to sign a [corporate CLA](https://developers.google.com/open-source/cla/corporate).
(https://developers.google.com/open-source/cla/corporate).
Follow either of the two links above to access the appropriate CLA and 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 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. 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 1. Ensure that your code adheres to the existing style in the sample to which
you are contributing. Refer to the you are contributing. Refer to the
[Google Cloud Platform Samples Style Guide] [Google Cloud Platform Samples Style Guide](https://github.com/GoogleCloudPlatform/Template/wiki/style.html) for the
(https://github.com/GoogleCloudPlatform/Template/wiki/style.html) for the
recommended coding standards for this organization. recommended coding standards for this organization.
1. Ensure that your code has an appropriate set of unit tests which all pass. 1. Ensure that your code has an appropriate set of unit tests which all pass.
1. Submit a pull request. 1. Submit a pull request.

@ -112,16 +112,15 @@ Find out more about the [UI architecture here](docs/ArchitectureLearningJourney.
# Baseline profiles # 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. 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). 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 > Note: The baseline profile needs to be re-generated for release builds that touched code which changes app startup.
| changes app startup.
To generate the baseline profile, select the `benchmark` build variant and run the To generate the baseline profile, select the `benchmark` build variant and run the
`BaselineProfileGenerator` benchmark test on an AOSP Android Emulator. `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 # License

@ -35,4 +35,5 @@ dependencies {
implementation(project(":core-ui")) implementation(project(":core-ui"))
implementation(libs.androidx.activity.compose) implementation(libs.androidx.activity.compose)
implementation(libs.accompanist.flowlayout)
} }

@ -17,7 +17,6 @@
package com.google.samples.apps.niacatalog.ui package com.google.samples.apps.niacatalog.ui
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.add import androidx.compose.foundation.layout.add
import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.asPaddingValues
@ -37,6 +36,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp 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.NiaDropdownMenuButton
import com.google.samples.apps.nowinandroid.core.ui.component.NiaFilledButton import com.google.samples.apps.nowinandroid.core.ui.component.NiaFilledButton
import com.google.samples.apps.nowinandroid.core.ui.component.NiaFilterChip 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 { Text("Buttons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton(onClick = {}) { NiaFilledButton(onClick = {}) {
Text(text = "Enabled") Text(text = "Enabled")
} }
@ -90,7 +90,7 @@ fun NiaCatalog() {
} }
item { Text("Disabled buttons", Modifier.padding(top = 16.dp)) } item { Text("Disabled buttons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
enabled = false enabled = false
@ -113,7 +113,7 @@ fun NiaCatalog() {
} }
item { Text("Buttons with leading icons", Modifier.padding(top = 16.dp)) } item { Text("Buttons with leading icons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
text = { Text(text = "Enabled") }, text = { Text(text = "Enabled") },
@ -139,7 +139,7 @@ fun NiaCatalog() {
} }
item { Text("Disabled buttons with leading icons", Modifier.padding(top = 16.dp)) } item { Text("Disabled buttons with leading icons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
enabled = false, enabled = false,
@ -168,7 +168,7 @@ fun NiaCatalog() {
} }
item { Text("Buttons with trailing icons", Modifier.padding(top = 16.dp)) } item { Text("Buttons with trailing icons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
text = { Text(text = "Enabled") }, text = { Text(text = "Enabled") },
@ -194,7 +194,7 @@ fun NiaCatalog() {
} }
item { Text("Disabled buttons with trailing icons", Modifier.padding(top = 16.dp)) } item { Text("Disabled buttons with trailing icons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
enabled = false, enabled = false,
@ -223,7 +223,7 @@ fun NiaCatalog() {
} }
item { Text("Small buttons", Modifier.padding(top = 16.dp)) } item { Text("Small buttons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
small = true small = true
@ -246,7 +246,7 @@ fun NiaCatalog() {
} }
item { Text("Disabled small buttons", Modifier.padding(top = 16.dp)) } item { Text("Disabled small buttons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
enabled = false, enabled = false,
@ -272,7 +272,7 @@ fun NiaCatalog() {
} }
item { Text("Small buttons with leading icons", Modifier.padding(top = 16.dp)) } item { Text("Small buttons with leading icons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
small = true, small = true,
@ -306,7 +306,7 @@ fun NiaCatalog() {
) )
} }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
enabled = false, enabled = false,
@ -338,7 +338,7 @@ fun NiaCatalog() {
} }
item { Text("Small buttons with trailing icons", Modifier.padding(top = 16.dp)) } item { Text("Small buttons with trailing icons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
small = true, small = true,
@ -372,7 +372,7 @@ fun NiaCatalog() {
) )
} }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
NiaFilledButton( NiaFilledButton(
onClick = {}, onClick = {},
enabled = false, enabled = false,
@ -413,7 +413,7 @@ fun NiaCatalog() {
} }
item { Text("Chips", Modifier.padding(top = 16.dp)) } item { Text("Chips", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
var firstChecked by remember { mutableStateOf(false) } var firstChecked by remember { mutableStateOf(false) }
NiaFilterChip( NiaFilterChip(
checked = firstChecked, checked = firstChecked,
@ -437,7 +437,7 @@ fun NiaCatalog() {
} }
item { Text("Toggle buttons", Modifier.padding(top = 16.dp)) } item { Text("Toggle buttons", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
var firstChecked by remember { mutableStateOf(false) } var firstChecked by remember { mutableStateOf(false) }
NiaToggleButton( NiaToggleButton(
checked = firstChecked, checked = firstChecked,
@ -498,7 +498,7 @@ fun NiaCatalog() {
} }
item { Text("View toggle", Modifier.padding(top = 16.dp)) } item { Text("View toggle", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
var firstExpanded by remember { mutableStateOf(false) } var firstExpanded by remember { mutableStateOf(false) }
NiaViewToggleButton( NiaViewToggleButton(
expanded = firstExpanded, expanded = firstExpanded,
@ -517,7 +517,7 @@ fun NiaCatalog() {
} }
item { Text("Tags", Modifier.padding(top = 16.dp)) } item { Text("Tags", Modifier.padding(top = 16.dp)) }
item { item {
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { FlowRow(mainAxisSpacing = 16.dp) {
var firstFollowed by remember { mutableStateOf(false) } var firstFollowed by remember { mutableStateOf(false) }
NiaTopicTag( NiaTopicTag(
followed = firstFollowed, followed = firstFollowed,

@ -17,4 +17,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/> <background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/> <foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon> </adaptive-icon>

@ -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 -dontobfuscate

@ -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;->compareTo(II)I
HSPLandroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility;->ordinal(I)I HSPLandroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility;->ordinal(I)I
HSPLandroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility;->values(I)[I HSPLandroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility;->values(I)[I
HSPLandroidx/compose/animation/core/AnimationResult;-><init>(Landroidx/compose/animation/core/AnimationState;I)V
HSPLandroidx/compose/animation/core/AnimationScope;-><init>(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;-><init>(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;->getValue()Ljava/lang/Object;
HSPLandroidx/compose/animation/core/AnimationScope;->setRunning$animation_core_release(Z)V 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;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector;
HSPLandroidx/compose/animation/core/AnimationVector;->reset$animation_core_release()V 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/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/Animations;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec;
HSPLandroidx/compose/animation/core/ComplexDouble;-><init>(DD)V HSPLandroidx/compose/animation/core/ComplexDouble;-><init>(DD)V
HSPLandroidx/compose/animation/core/ComplexDouble;->equals(Ljava/lang/Object;)Z 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;->hashCode()I
HSPLandroidx/compose/foundation/Background;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; HSPLandroidx/compose/foundation/Background;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/foundation/Background;->toString()Ljava/lang/String; 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$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/BackgroundKt;->background-bw27NRU(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/foundation/BorderKt$border$2$1;-><init>(FLandroidx/compose/ui/graphics/Shape;Landroidx/compose/ui/node/Ref;Landroidx/compose/ui/graphics/Brush;)V HSPLandroidx/compose/foundation/BorderKt$border$2$1;-><init>(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;->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;->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/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/SpacerKt;->Spacer(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V
HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;-><clinit>()V HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;-><clinit>()V
HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;-><init>()V HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;-><init>()V
@ -1388,14 +1389,12 @@ HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsum
HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;-><init>()V HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;-><init>()V
HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->invoke()Ljava/lang/Object; HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->invoke()Ljava/lang/Object;
HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;-><clinit>()V HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;-><clinit>()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/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;-><init>()V HSPLandroidx/compose/foundation/layout/WindowInsetsPadding_androidKt$safeDrawingPadding$$inlined$windowInsetsPadding$1;-><init>()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/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;->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/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;-><init>(Landroidx/compose/foundation/layout/WrapContentModifier;ILandroidx/compose/ui/layout/Placeable;ILandroidx/compose/ui/layout/MeasureScope;)V HSPLandroidx/compose/foundation/layout/WrapContentModifier$measure$1;-><init>(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$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroidx/compose/foundation/layout/WrapContentModifier;-><init>(IZLkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V HSPLandroidx/compose/foundation/layout/WrapContentModifier;-><init>(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;-><init>(IILjava/lang/Object;)V HSPLandroidx/compose/foundation/lazy/layout/IntervalHolder;-><init>(IILjava/lang/Object;)V
HSPLandroidx/compose/foundation/lazy/layout/IntervalList;->getIntervals()Ljava/util/List; HSPLandroidx/compose/foundation/lazy/layout/IntervalList;->getIntervals()Ljava/util/List;
HSPLandroidx/compose/foundation/lazy/layout/IntervalList;->getTotalSize()I 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;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1$invoke$$inlined$onDispose$1;-><init>(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$invoke$$inlined$onDispose$1;->dispose()V
HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1;-><init>(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;-><init>(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;-><init>(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$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/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;-><init>()V HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;-><init>()V
HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->add(ILjava/lang/Object;)V HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->add(ILjava/lang/Object;)V
HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->getIntervals()Ljava/util/List; 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;-><init>(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;-><init>(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;->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/implementations/persistentOrderedSet/PersistentOrderedSet;->getSize()I
HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;-><init>()V
HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->checkElementIndex$runtime_release(II)V HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->checkElementIndex$runtime_release(II)V
HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;-><init>()V HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;-><init>()V
HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;-><init>(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;I)V HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;-><init>(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;->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;->set(I)Landroidx/compose/runtime/snapshots/SnapshotIdSet;
HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->toString()Ljava/lang/String; 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;-><clinit>()V HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;-><clinit>()V
HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;-><init>()V HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;-><init>()V
HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
@ -3119,8 +3121,6 @@ HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;-><init>(Landroid/graphics/B
HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getHeight()I HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getHeight()I
HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getWidth()I HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getWidth()I
HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->prepareToDraw()V 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/AndroidMatrixConversions_androidKt;->setFrom-tU-YjHk([FLandroid/graphics/Matrix;)V
HSPLandroidx/compose/ui/graphics/AndroidPaint;-><init>()V HSPLandroidx/compose/ui/graphics/AndroidPaint;-><init>()V
HSPLandroidx/compose/ui/graphics/AndroidPaint;->asFrameworkPaint()Landroid/graphics/Paint; 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;->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;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->toString()Ljava/lang/String; HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->toString()Ljava/lang/String;
HSPLandroidx/compose/ui/graphics/Brush;-><clinit>()V
HSPLandroidx/compose/ui/graphics/Brush;-><init>()V HSPLandroidx/compose/ui/graphics/Brush;-><init>()V
HSPLandroidx/compose/ui/graphics/Brush;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/graphics/Brush;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/ui/graphics/Brush;->applyTo-Pq9zytI(JLandroidx/compose/ui/graphics/Paint;F)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;->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/Canvas$DefaultImpls;->drawRect(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/geometry/Rect;Landroidx/compose/ui/graphics/Paint;)V
HSPLandroidx/compose/ui/graphics/CanvasHolder;-><init>()V HSPLandroidx/compose/ui/graphics/CanvasHolder;-><init>()V
HSPLandroidx/compose/ui/graphics/CanvasKt;->Canvas(Landroidx/compose/ui/graphics/ImageBitmap;)Landroidx/compose/ui/graphics/Canvas;
HSPLandroidx/compose/ui/graphics/Color$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/graphics/Color$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLandroidx/compose/ui/graphics/Color;-><clinit>()V HSPLandroidx/compose/ui/graphics/Color;-><clinit>()V
HSPLandroidx/compose/ui/graphics/Color;-><init>(J)V HSPLandroidx/compose/ui/graphics/Color;-><init>(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;->isSrgb()Z
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->toString()Ljava/lang/String; HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->toString()Ljava/lang/String;
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->toXyz([F)[F 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;-><clinit>()V HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;-><clinit>()V
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;-><init>()V HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;-><init>()V
HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; 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;-><init>(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;-><init>(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;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/graphics/vector/VectorPath;->hashCode()I HSPLandroidx/compose/ui/graphics/vector/VectorPath;->hashCode()I
HSPLandroidx/compose/ui/graphics/vector/compat/AndroidVectorResources;-><clinit>()V
HSPLandroidx/compose/ui/graphics/vector/compat/XmlVectorParser_androidKt;->obtainBrushFromComplexColor(Landroidx/core/content/res/ComplexColorCompat;)Landroidx/compose/ui/graphics/Brush; 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;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V
HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1;->invoke()Ljava/lang/Object; 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/NodeParent;->removeDetachedPointerInputFilters()V
HSPLandroidx/compose/ui/input/pointer/PointerEvent;-><init>(Ljava/util/List;Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V HSPLandroidx/compose/ui/input/pointer/PointerEvent;-><init>(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/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;-><clinit>()V HSPLandroidx/compose/ui/input/pointer/PointerEventPass;-><clinit>()V
HSPLandroidx/compose/ui/input/pointer/PointerEventPass;-><init>(Ljava/lang/String;I)V HSPLandroidx/compose/ui/input/pointer/PointerEventPass;-><init>(Ljava/lang/String;I)V
HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->valueOf(Ljava/lang/String;)Landroidx/compose/ui/input/pointer/PointerEventPass; 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;-><init>()V HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;-><init>()V
HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;->onCancel()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/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;-><init>(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;Lkotlin/coroutines/Continuation;)V HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;-><init>(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;->awaitPointerEvent(Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->getContext()Lkotlin/coroutines/CoroutineContext; 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;-><clinit>()V HSPLandroidx/compose/ui/layout/ContentScale$Companion;-><clinit>()V
HSPLandroidx/compose/ui/layout/ContentScale$Companion;-><init>()V HSPLandroidx/compose/ui/layout/ContentScale$Companion;-><init>()V
HSPLandroidx/compose/ui/layout/ContentScale;->computeScaleFactor-H7hwNQA(JJ)J 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;-><init>(Lkotlin/jvm/functions/Function2;)V HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;-><init>(Lkotlin/jvm/functions/Function2;)V
HSPLandroidx/compose/ui/layout/IntrinsicMeasurable;->getParentData()Ljava/lang/Object; HSPLandroidx/compose/ui/layout/IntrinsicMeasurable;->getParentData()Ljava/lang/Object;
HSPLandroidx/compose/ui/layout/IntrinsicMeasureScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; 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;->localPositionOf-R5De75A(Landroidx/compose/ui/layout/LayoutCoordinates;J)J
HSPLandroidx/compose/ui/layout/LayoutCoordinates;->localToRoot-MK-Hz9U(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/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;-><init>(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V HSPLandroidx/compose/ui/layout/LayoutId;-><init>(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
HSPLandroidx/compose/ui/layout/LayoutId;->all(Lkotlin/jvm/functions/Function1;)Z HSPLandroidx/compose/ui/layout/LayoutId;->all(Lkotlin/jvm/functions/Function1;)Z
HSPLandroidx/compose/ui/layout/LayoutId;->equals(Ljava/lang/Object;)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;->subList(II)Ljava/util/List;
HSPLandroidx/compose/ui/node/HitTestResult;->toArray()[Ljava/lang/Object; 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/HitTestResult;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
HSPLandroidx/compose/ui/node/HitTestResultKt;->access$DistanceAndInLayer(FZ)J
HSPLandroidx/compose/ui/node/InnerPlaceable;-><clinit>()V HSPLandroidx/compose/ui/node/InnerPlaceable;-><clinit>()V
HSPLandroidx/compose/ui/node/InnerPlaceable;-><init>(Landroidx/compose/ui/node/LayoutNode;)V HSPLandroidx/compose/ui/node/InnerPlaceable;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
HSPLandroidx/compose/ui/node/InnerPlaceable;->calculateAlignmentLine(Landroidx/compose/ui/layout/AlignmentLine;)I 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;-><clinit>()V HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;-><clinit>()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;->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/AndroidCompositionLocals_androidKt;->access$noLocalProvidedFor(Ljava/lang/String;)Ljava/lang/Void;
HSPLandroidx/compose/ui/platform/AndroidFontResourceLoader;-><init>(Landroid/content/Context;)V
HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2$dispatcher$1;-><init>(Lkotlin/coroutines/Continuation;)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2$dispatcher$1;-><init>(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;->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; 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;-><init>(Landroidx/compose/u
HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->equals(Ljava/lang/Object;)Z HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->hashCode()I HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->hashCode()I
HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->toString()Ljava/lang/String; HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->toString()Ljava/lang/String;
HSPLandroidx/compose/ui/text/ParagraphStyle;-><init>(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;-><init>(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;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/ParagraphStyle;->hashCode()I 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;->merge(Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle;
HSPLandroidx/compose/ui/text/ParagraphStyle;->toString()Ljava/lang/String; HSPLandroidx/compose/ui/text/ParagraphStyle;->toString()Ljava/lang/String;
HSPLandroidx/compose/ui/text/SpanStyle;-><init>(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;-><init>(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;-><init>(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;-><init>(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;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/SpanStyle;->hashCode()I HSPLandroidx/compose/ui/text/SpanStyle;->hashCode()I
HSPLandroidx/compose/ui/text/SpanStyle;->merge(Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle; 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/TextRangeKt;->constrain-8ffj60Q(JII)J
HSPLandroidx/compose/ui/text/TextStyle;-><clinit>()V HSPLandroidx/compose/ui/text/TextStyle;-><clinit>()V
HSPLandroidx/compose/ui/text/TextStyle;-><init>(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;-><init>(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;-><init>(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;-><init>(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;-><init>(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/ParagraphStyle;Lkotlinx/coroutines/SupervisorKt;)V HSPLandroidx/compose/ui/text/TextStyle;-><init>(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;->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;->equals(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/TextStyle;->hashCode()I HSPLandroidx/compose/ui/text/TextStyle;->hashCode()I
@ -5477,7 +5478,6 @@ HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;-><init>(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(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/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;-><clinit>()V HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;-><clinit>()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(ILjava/lang/Object;)V
HSPLandroidx/compose/ui/text/font/FontListFontFamily;->add(Ljava/lang/Object;)Z HSPLandroidx/compose/ui/text/font/FontListFontFamily;->add(Ljava/lang/Object;)Z
HSPLandroidx/compose/ui/text/font/FontListFontFamily;->addAll(ILjava/util/Collection;)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;->plus-AH228Gc(JJ)J
HSPLandroidx/compose/ui/unit/Velocity;->toString()Ljava/lang/String; HSPLandroidx/compose/ui/unit/Velocity;->toString()Ljava/lang/String;
HSPLandroidx/compose/ui/unit/VelocityKt;->Velocity(FF)J HSPLandroidx/compose/ui/unit/VelocityKt;->Velocity(FF)J
HSPLandroidx/compose/ui/util/MathHelpersKt;->lerp(FFF)F
HSPLandroidx/lifecycle/LiveData$1;-><init>(Landroidx/lifecycle/LiveData;)V HSPLandroidx/lifecycle/LiveData$1;-><init>(Landroidx/lifecycle/LiveData;)V
HSPLandroidx/lifecycle/LiveData$1;->run()V HSPLandroidx/lifecycle/LiveData$1;->run()V
HSPLandroidx/lifecycle/LiveData$AlwaysActiveObserver;-><init>(Landroidx/lifecycle/LiveData;Landroidx/lifecycle/Observer;)V HSPLandroidx/lifecycle/LiveData$AlwaysActiveObserver;-><init>(Landroidx/lifecycle/LiveData;Landroidx/lifecycle/Observer;)V
@ -5854,7 +5855,6 @@ HSPLandroidx/navigation/NavDeepLinkRequest;-><init>(Landroid/content/Intent;)V
HSPLandroidx/navigation/NavDeepLinkRequest;-><init>(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)V HSPLandroidx/navigation/NavDeepLinkRequest;-><init>(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)V
HSPLandroidx/navigation/NavDestination;-><clinit>()V HSPLandroidx/navigation/NavDestination;-><clinit>()V
HSPLandroidx/navigation/NavDestination;-><init>(Landroidx/navigation/Navigator;)V HSPLandroidx/navigation/NavDestination;-><init>(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;->addInDefaultArgs(Landroid/os/Bundle;)Landroid/os/Bundle;
HSPLandroidx/navigation/NavDestination;->equals(Ljava/lang/Object;)Z HSPLandroidx/navigation/NavDestination;->equals(Ljava/lang/Object;)Z
HSPLandroidx/navigation/NavDestination;->getArguments()Ljava/util/Map; 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;->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;->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/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;-><init>(Lkotlin/coroutines/Continuation;Ljava/lang/Throwable;Z)V HSPLkotlinx/coroutines/CancelledContinuation;-><init>(Lkotlin/coroutines/Continuation;Ljava/lang/Throwable;Z)V
HSPLkotlinx/coroutines/ChildContinuation;-><init>(Lkotlinx/coroutines/CancellableContinuationImpl;)V HSPLkotlinx/coroutines/ChildContinuation;-><init>(Lkotlinx/coroutines/CancellableContinuationImpl;)V
HSPLkotlinx/coroutines/ChildContinuation;->invoke(Ljava/lang/Throwable;)V HSPLkotlinx/coroutines/ChildContinuation;->invoke(Ljava/lang/Throwable;)V
@ -6057,8 +6059,6 @@ HSPLkotlinx/coroutines/CompletedContinuation;-><init>(Ljava/lang/Object;Lkotlinx
HSPLkotlinx/coroutines/CompletedExceptionally;-><init>(Ljava/lang/Throwable;Z)V HSPLkotlinx/coroutines/CompletedExceptionally;-><init>(Ljava/lang/Throwable;Z)V
HSPLkotlinx/coroutines/CompletedExceptionally;->getHandled()Z HSPLkotlinx/coroutines/CompletedExceptionally;->getHandled()Z
HSPLkotlinx/coroutines/CompletionHandlerBase;-><init>()V HSPLkotlinx/coroutines/CompletionHandlerBase;-><init>()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/CoroutineContextKt;->newCoroutineContext(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;-><init>()V HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;-><init>()V
HSPLkotlinx/coroutines/CoroutineDispatcher$Key;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLkotlinx/coroutines/CoroutineDispatcher$Key;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
@ -6077,11 +6077,15 @@ HSPLkotlinx/coroutines/DefaultExecutor;-><init>()V
HSPLkotlinx/coroutines/DefaultExecutor;->getThread()Ljava/lang/Thread; HSPLkotlinx/coroutines/DefaultExecutor;->getThread()Ljava/lang/Thread;
HSPLkotlinx/coroutines/DefaultExecutor;->isShutdownRequested()Z HSPLkotlinx/coroutines/DefaultExecutor;->isShutdownRequested()Z
HSPLkotlinx/coroutines/DefaultExecutor;->run()V 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;-><init>(I)V HSPLkotlinx/coroutines/DispatchedTask;-><init>(I)V
HSPLkotlinx/coroutines/DispatchedTask;->getExceptionalResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Throwable; 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;->getSuccessfulResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object;
HSPLkotlinx/coroutines/DispatchedTask;->handleFatalException(Ljava/lang/Throwable;Ljava/lang/Throwable;)V HSPLkotlinx/coroutines/DispatchedTask;->handleFatalException(Ljava/lang/Throwable;Ljava/lang/Throwable;)V
HSPLkotlinx/coroutines/DispatchedTask;->run()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;-><init>(Lkotlinx/coroutines/DisposableHandle;)V HSPLkotlinx/coroutines/DisposeOnCancel;-><init>(Lkotlinx/coroutines/DisposableHandle;)V
HSPLkotlinx/coroutines/Empty;-><init>(Z)V HSPLkotlinx/coroutines/Empty;-><init>(Z)V
HSPLkotlinx/coroutines/Empty;->getList()Lkotlinx/coroutines/NodeList; HSPLkotlinx/coroutines/Empty;->getList()Lkotlinx/coroutines/NodeList;
@ -6325,11 +6329,6 @@ HSPLkotlinx/coroutines/internal/ScopeCoroutine;-><init>(Lkotlin/coroutines/Corou
HSPLkotlinx/coroutines/internal/ScopeCoroutine;->afterResume(Ljava/lang/Object;)V HSPLkotlinx/coroutines/internal/ScopeCoroutine;->afterResume(Ljava/lang/Object;)V
HSPLkotlinx/coroutines/internal/ScopeCoroutine;->isScopedCoroutine()Z HSPLkotlinx/coroutines/internal/ScopeCoroutine;->isScopedCoroutine()Z
HSPLkotlinx/coroutines/internal/Symbol;-><init>(Ljava/lang/String;)V HSPLkotlinx/coroutines/internal/Symbol;-><init>(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;-><init>()V HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;-><init>()V
HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;-><init>()V HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;-><init>()V
@ -6358,7 +6357,6 @@ HSPLkotlinx/coroutines/sync/MutexImpl;-><init>(Z)V
HSPLkotlinx/coroutines/sync/MutexImpl;->lock(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; 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;->tryLock(Ljava/lang/Object;)Z
HSPLkotlinx/coroutines/sync/MutexImpl;->unlock(Ljava/lang/Object;)V HSPLkotlinx/coroutines/sync/MutexImpl;->unlock(Ljava/lang/Object;)V
Landroidx/compose/animation/AndroidFlingSpline$$ExternalSyntheticOutline0;
Landroidx/compose/animation/AndroidFlingSpline$$ExternalSyntheticOutline1; Landroidx/compose/animation/AndroidFlingSpline$$ExternalSyntheticOutline1;
Landroidx/compose/animation/AndroidFlingSpline$FlingResult$$ExternalSyntheticOutline0; Landroidx/compose/animation/AndroidFlingSpline$FlingResult$$ExternalSyntheticOutline0;
Landroidx/compose/animation/AndroidFlingSpline$FlingResult; 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/AnimateAsStateKt;
Landroidx/compose/animation/core/Animation; Landroidx/compose/animation/core/Animation;
Landroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility; Landroidx/compose/animation/core/AnimationEndReason$EnumUnboxingSharedUtility;
Landroidx/compose/animation/core/AnimationResult;
Landroidx/compose/animation/core/AnimationScope; Landroidx/compose/animation/core/AnimationScope;
Landroidx/compose/animation/core/AnimationSpec; Landroidx/compose/animation/core/AnimationSpec;
Landroidx/compose/animation/core/AnimationState; Landroidx/compose/animation/core/AnimationState;
@ -6400,6 +6397,7 @@ Landroidx/compose/animation/core/AnimationVector1D;
Landroidx/compose/animation/core/AnimationVector2D; Landroidx/compose/animation/core/AnimationVector2D;
Landroidx/compose/animation/core/AnimationVector4D; Landroidx/compose/animation/core/AnimationVector4D;
Landroidx/compose/animation/core/AnimationVector; Landroidx/compose/animation/core/AnimationVector;
Landroidx/compose/animation/core/AnimationVectorsKt;
Landroidx/compose/animation/core/Animations; Landroidx/compose/animation/core/Animations;
Landroidx/compose/animation/core/ComplexDouble; Landroidx/compose/animation/core/ComplexDouble;
Landroidx/compose/animation/core/ComplexDoubleKt; 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/SizeKt;
Landroidx/compose/foundation/layout/SizeModifier$measure$1; Landroidx/compose/foundation/layout/SizeModifier$measure$1;
Landroidx/compose/foundation/layout/SizeModifier; Landroidx/compose/foundation/layout/SizeModifier;
Landroidx/compose/foundation/layout/SpacerKt$$ExternalSyntheticOutline0;
Landroidx/compose/foundation/layout/SpacerKt; Landroidx/compose/foundation/layout/SpacerKt;
Landroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1; Landroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;
Landroidx/compose/foundation/layout/SpacerMeasurePolicy; Landroidx/compose/foundation/layout/SpacerMeasurePolicy;
@ -6815,7 +6814,6 @@ Landroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedW
Landroidx/compose/foundation/layout/WindowInsetsPaddingKt; Landroidx/compose/foundation/layout/WindowInsetsPaddingKt;
Landroidx/compose/foundation/layout/WindowInsetsPadding_androidKt$safeDrawingPadding$$inlined$windowInsetsPadding$1; Landroidx/compose/foundation/layout/WindowInsetsPadding_androidKt$safeDrawingPadding$$inlined$windowInsetsPadding$1;
Landroidx/compose/foundation/layout/WindowInsetsSides; Landroidx/compose/foundation/layout/WindowInsetsSides;
Landroidx/compose/foundation/layout/WindowInsets_androidKt;
Landroidx/compose/foundation/layout/WrapContentModifier$measure$1; Landroidx/compose/foundation/layout/WrapContentModifier$measure$1;
Landroidx/compose/foundation/layout/WrapContentModifier; Landroidx/compose/foundation/layout/WrapContentModifier;
Landroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo; 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/DummyHandle;
Landroidx/compose/foundation/lazy/layout/IntervalHolder; Landroidx/compose/foundation/lazy/layout/IntervalHolder;
Landroidx/compose/foundation/lazy/layout/IntervalList; 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$invoke$$inlined$onDispose$1;
Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1; Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1;
Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$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;
Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt$LazyLayoutPrefetcher$2; Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt$LazyLayoutPrefetcher$2;
Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt; 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/MutableIntervalList;
Landroidx/compose/foundation/lazy/layout/PinnableParent$PinnedItemsHandle; Landroidx/compose/foundation/lazy/layout/PinnableParent$PinnedItemsHandle;
Landroidx/compose/foundation/lazy/layout/PinnableParent; 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/PersistentOrderedSet;
Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSetIterator; 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/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/ListImplementation;
Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership; Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;
Landroidx/compose/runtime/internal/ComposableLambda; Landroidx/compose/runtime/internal/ComposableLambda;
@ -7383,6 +7382,7 @@ Landroidx/compose/runtime/snapshots/SnapshotApplyResult;
Landroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap; Landroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;
Landroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1; Landroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;
Landroidx/compose/runtime/snapshots/SnapshotIdSet; Landroidx/compose/runtime/snapshots/SnapshotIdSet;
Landroidx/compose/runtime/snapshots/SnapshotIdSetKt;
Landroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2; Landroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;
Landroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1; Landroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;
Landroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$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$Companion;
Landroidx/compose/ui/geometry/CornerRadius; Landroidx/compose/ui/geometry/CornerRadius;
Landroidx/compose/ui/geometry/CornerRadiusKt; Landroidx/compose/ui/geometry/CornerRadiusKt;
Landroidx/compose/ui/geometry/GeometryUtilsKt;
Landroidx/compose/ui/geometry/MutableRect; Landroidx/compose/ui/geometry/MutableRect;
Landroidx/compose/ui/geometry/Offset$Companion; Landroidx/compose/ui/geometry/Offset$Companion;
Landroidx/compose/ui/geometry/Offset; Landroidx/compose/ui/geometry/Offset;
Landroidx/compose/ui/geometry/OffsetKt; Landroidx/compose/ui/geometry/OffsetKt;
Landroidx/compose/ui/geometry/Rect; Landroidx/compose/ui/geometry/Rect;
Landroidx/compose/ui/geometry/RectKt;
Landroidx/compose/ui/geometry/RoundRect; Landroidx/compose/ui/geometry/RoundRect;
Landroidx/compose/ui/geometry/RoundRectKt; Landroidx/compose/ui/geometry/RoundRectKt;
Landroidx/compose/ui/geometry/Size$Companion; 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;
Landroidx/compose/ui/graphics/AndroidCanvas_androidKt; Landroidx/compose/ui/graphics/AndroidCanvas_androidKt;
Landroidx/compose/ui/graphics/AndroidImageBitmap; Landroidx/compose/ui/graphics/AndroidImageBitmap;
Landroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;
Landroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt; Landroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;
Landroidx/compose/ui/graphics/AndroidPaint; Landroidx/compose/ui/graphics/AndroidPaint;
Landroidx/compose/ui/graphics/AndroidPaint_androidKt$WhenMappings; Landroidx/compose/ui/graphics/AndroidPaint_androidKt$WhenMappings;
Landroidx/compose/ui/graphics/AndroidPath; Landroidx/compose/ui/graphics/AndroidPath;
Landroidx/compose/ui/graphics/AndroidPathEffect; Landroidx/compose/ui/graphics/AndroidPathEffect;
Landroidx/compose/ui/graphics/AndroidPathMeasure; Landroidx/compose/ui/graphics/AndroidPathMeasure;
Landroidx/compose/ui/graphics/AndroidShader_androidKt;
Landroidx/compose/ui/graphics/Api26Bitmap; Landroidx/compose/ui/graphics/Api26Bitmap;
Landroidx/compose/ui/graphics/BlendMode; Landroidx/compose/ui/graphics/BlendMode;
Landroidx/compose/ui/graphics/BlendModeColorFilterHelper; Landroidx/compose/ui/graphics/BlendModeColorFilterHelper;
Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1; Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;
Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier; Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier;
Landroidx/compose/ui/graphics/Brush$Companion;
Landroidx/compose/ui/graphics/Brush; Landroidx/compose/ui/graphics/Brush;
Landroidx/compose/ui/graphics/BrushKt$ShaderBrush$1; Landroidx/compose/ui/graphics/BrushKt$ShaderBrush$1;
Landroidx/compose/ui/graphics/Canvas$DefaultImpls; Landroidx/compose/ui/graphics/Canvas$DefaultImpls;
Landroidx/compose/ui/graphics/Canvas; Landroidx/compose/ui/graphics/Canvas;
Landroidx/compose/ui/graphics/CanvasHolder; Landroidx/compose/ui/graphics/CanvasHolder;
Landroidx/compose/ui/graphics/CanvasKt;
Landroidx/compose/ui/graphics/CanvasUtils; Landroidx/compose/ui/graphics/CanvasUtils;
Landroidx/compose/ui/graphics/CanvasZHelper; Landroidx/compose/ui/graphics/CanvasZHelper;
Landroidx/compose/ui/graphics/Color$Companion; Landroidx/compose/ui/graphics/Color$Companion;
Landroidx/compose/ui/graphics/Color; Landroidx/compose/ui/graphics/Color;
Landroidx/compose/ui/graphics/ColorFilter; Landroidx/compose/ui/graphics/ColorFilter;
Landroidx/compose/ui/graphics/ColorKt; Landroidx/compose/ui/graphics/ColorKt;
Landroidx/compose/ui/graphics/FilterQuality;
Landroidx/compose/ui/graphics/Float16$Companion; Landroidx/compose/ui/graphics/Float16$Companion;
Landroidx/compose/ui/graphics/Float16; Landroidx/compose/ui/graphics/Float16;
Landroidx/compose/ui/graphics/GraphicsLayerModifierKt; Landroidx/compose/ui/graphics/GraphicsLayerModifierKt;
@ -7478,8 +7481,6 @@ Landroidx/compose/ui/graphics/Path$DefaultImpls;
Landroidx/compose/ui/graphics/Path; Landroidx/compose/ui/graphics/Path;
Landroidx/compose/ui/graphics/PathFillType; Landroidx/compose/ui/graphics/PathFillType;
Landroidx/compose/ui/graphics/PathMeasure; 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$RectangleShape$1;
Landroidx/compose/ui/graphics/RectangleShapeKt; Landroidx/compose/ui/graphics/RectangleShapeKt;
Landroidx/compose/ui/graphics/RenderEffect; Landroidx/compose/ui/graphics/RenderEffect;
@ -7494,7 +7495,6 @@ Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;
Landroidx/compose/ui/graphics/SolidColor; Landroidx/compose/ui/graphics/SolidColor;
Landroidx/compose/ui/graphics/StrokeCap; Landroidx/compose/ui/graphics/StrokeCap;
Landroidx/compose/ui/graphics/StrokeJoin; Landroidx/compose/ui/graphics/StrokeJoin;
Landroidx/compose/ui/graphics/TileMode;
Landroidx/compose/ui/graphics/TileModeVerificationHelper; Landroidx/compose/ui/graphics/TileModeVerificationHelper;
Landroidx/compose/ui/graphics/TransformOrigin$Companion; Landroidx/compose/ui/graphics/TransformOrigin$Companion;
Landroidx/compose/ui/graphics/TransformOrigin; 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$Companion;
Landroidx/compose/ui/graphics/colorspace/ColorModel; Landroidx/compose/ui/graphics/colorspace/ColorModel;
Landroidx/compose/ui/graphics/colorspace/ColorSpace; 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$1;
Landroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$2; Landroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$2;
Landroidx/compose/ui/graphics/colorspace/ColorSpaces; 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$TrimPathStart;
Landroidx/compose/ui/graphics/vector/VectorProperty; Landroidx/compose/ui/graphics/vector/VectorProperty;
Landroidx/compose/ui/graphics/vector/compat/AndroidVectorParser; 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/graphics/vector/compat/XmlVectorParser_androidKt;
Landroidx/compose/ui/text/AnnotatedString$Range; Landroidx/compose/ui/text/AnnotatedString$Range;
Landroidx/compose/ui/text/AnnotatedString; Landroidx/compose/ui/text/AnnotatedString;
@ -7665,7 +7665,6 @@ Landroidx/compose/ui/text/ParagraphStyle;
Landroidx/compose/ui/text/ParagraphStyleKt; Landroidx/compose/ui/text/ParagraphStyleKt;
Landroidx/compose/ui/text/Placeholder; Landroidx/compose/ui/text/Placeholder;
Landroidx/compose/ui/text/PlaceholderVerticalAlign; Landroidx/compose/ui/text/PlaceholderVerticalAlign;
Landroidx/compose/ui/text/PlatformSpanStyle;
Landroidx/compose/ui/text/SaversKt$AnnotatedStringSaver$1; Landroidx/compose/ui/text/SaversKt$AnnotatedStringSaver$1;
Landroidx/compose/ui/text/SaversKt$AnnotatedStringSaver$2; Landroidx/compose/ui/text/SaversKt$AnnotatedStringSaver$2;
Landroidx/compose/ui/text/SaversKt$AnnotationRangeListSaver$1; 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/LayoutIntrinsics;
Landroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0; Landroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0;
Landroidx/compose/ui/text/android/Paint29; Landroidx/compose/ui/text/android/Paint29;
Landroidx/compose/ui/text/android/PaintExtensionsKt;
Landroidx/compose/ui/text/android/StaticLayoutFactory23; Landroidx/compose/ui/text/android/StaticLayoutFactory23;
Landroidx/compose/ui/text/android/StaticLayoutFactory26; Landroidx/compose/ui/text/android/StaticLayoutFactory26;
Landroidx/compose/ui/text/android/StaticLayoutFactory28; 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/caches/SimpleArrayMap;
Landroidx/compose/ui/text/font/AndroidFontLoader; Landroidx/compose/ui/text/font/AndroidFontLoader;
Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor; Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor;
Landroidx/compose/ui/text/font/AndroidFontUtils_androidKt;
Landroidx/compose/ui/text/font/AsyncTypefaceCache; Landroidx/compose/ui/text/font/AsyncTypefaceCache;
Landroidx/compose/ui/text/font/DefaultFontFamily; Landroidx/compose/ui/text/font/DefaultFontFamily;
Landroidx/compose/ui/text/font/Font$ResourceLoader; 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$resolve$result$1;
Landroidx/compose/ui/text/font/FontFamilyResolverImpl; Landroidx/compose/ui/text/font/FontFamilyResolverImpl;
Landroidx/compose/ui/text/font/FontFamilyResolverKt; Landroidx/compose/ui/text/font/FontFamilyResolverKt;
Landroidx/compose/ui/text/font/FontFamilyResolver_androidKt;
Landroidx/compose/ui/text/font/FontListFontFamily; Landroidx/compose/ui/text/font/FontListFontFamily;
Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$special$$inlined$CoroutineExceptionHandler$1; Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$special$$inlined$CoroutineExceptionHandler$1;
Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter; 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$Companion;
Landroidx/compose/ui/text/font/PlatformResolveInterceptor; Landroidx/compose/ui/text/font/PlatformResolveInterceptor;
Landroidx/compose/ui/text/font/PlatformTypefaces; Landroidx/compose/ui/text/font/PlatformTypefaces;
Landroidx/compose/ui/text/font/PlatformTypefacesApi28;
Landroidx/compose/ui/text/font/PlatformTypefacesApi; Landroidx/compose/ui/text/font/PlatformTypefacesApi;
Landroidx/compose/ui/text/font/PlatformTypefacesKt;
Landroidx/compose/ui/text/font/SystemFontFamily; Landroidx/compose/ui/text/font/SystemFontFamily;
Landroidx/compose/ui/text/font/TypefaceRequest; Landroidx/compose/ui/text/font/TypefaceRequest;
Landroidx/compose/ui/text/font/TypefaceRequestCache$runCached$currentTypefaceResult$1; 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$1;
Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2; Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2;
Landroidx/compose/ui/text/input/TextFieldValue; Landroidx/compose/ui/text/input/TextFieldValue;
Landroidx/compose/ui/text/input/TextFieldValueKt;
Landroidx/compose/ui/text/input/TextInputService; Landroidx/compose/ui/text/input/TextInputService;
Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand; Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;
Landroidx/compose/ui/text/input/TextInputServiceAndroid$baseInputConnection$2; 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$Companion;
Landroidx/compose/ui/unit/Velocity; Landroidx/compose/ui/unit/Velocity;
Landroidx/compose/ui/unit/VelocityKt; Landroidx/compose/ui/unit/VelocityKt;
Landroidx/compose/ui/util/MathHelpersKt;
Landroidx/navigation/ActivityNavigator$hostActivity$1; Landroidx/navigation/ActivityNavigator$hostActivity$1;
Landroidx/navigation/ActivityNavigator; Landroidx/navigation/ActivityNavigator;
Landroidx/navigation/FloatingWindow; Landroidx/navigation/FloatingWindow;

@ -16,13 +16,9 @@
package com.google.samples.apps.nowinandroid.navigation package com.google.samples.apps.nowinandroid.navigation
import android.app.Activity
import android.view.View
import androidx.compose.material3.windowsizeclass.WindowSizeClass import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalView
import androidx.core.view.doOnPreDraw
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
@ -67,23 +63,4 @@ fun NiaNavHost(
onBackClick = { navController.popBackStack() } 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()
}
}
} }

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2022 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:pathData="M0,0h108v108h-108z"
android:fillColor="#FFFFFF"/>
</vector>

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2022 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:pathData="M108,0L108,108L0,108L0,0L108,0ZM68.25,64.93L64.32,71.73C61.31,70.36 57.94,69.59 54.33,69.59C50.73,69.59 47.35,70.36 44.34,71.73L40.41,64.93C40.19,64.54 39.69,64.41 39.31,64.63C38.92,64.85 38.79,65.35 39.01,65.73L42.89,72.44C36.22,76.07 31.67,82.81 31,90.77L77.67,90.77C77,82.8 72.44,76.06 65.77,72.44L69.66,65.73C69.88,65.35 69.74,64.85 69.36,64.63C68.97,64.41 68.48,64.54 68.25,64.93ZM62.39,46.2L60.69,46.2C59.98,46.2 59.4,46.74 59.34,47.43L59.33,47.56L59.33,51.64L58.15,51.64C57.72,51.64 57.36,51.96 57.31,52.38L57.3,52.48L57.3,53.5C57.3,53.93 57.62,54.29 58.04,54.34L58.15,54.35L61.54,54.35L61.65,54.34C62.03,54.3 62.34,53.99 62.38,53.61L62.39,53.5L62.39,46.2ZM47.42,46.2L45.72,46.2L45.72,53.5C45.72,53.93 46.04,54.29 46.46,54.34L46.57,54.35L49.97,54.35C50.43,54.35 50.81,53.97 50.81,53.5L50.81,52.48C50.81,52.02 50.43,51.64 49.97,51.64L48.78,51.64L48.78,47.56C48.78,46.81 48.17,46.2 47.42,46.2ZM45.72,43.15L44.19,43.15C43.35,43.15 42.67,43.83 42.67,44.68C42.67,45.52 43.35,46.2 44.19,46.2L45.72,46.2L45.72,43.15ZM63.92,43.15L62.39,43.15L62.39,46.2L63.92,46.2C64.76,46.2 65.44,45.52 65.44,44.68C65.44,43.83 64.76,43.15 63.92,43.15ZM49.97,35L46.57,35C46.1,35 45.72,35.38 45.72,35.85L45.72,43.15L47.42,43.15C48.17,43.15 48.78,42.54 48.78,41.79L48.78,37.72L49.97,37.72C50.43,37.72 50.81,37.34 50.81,36.87L50.81,35.85C50.81,35.38 50.43,35 49.97,35ZM61.54,35L58.15,35C57.72,35 57.36,35.32 57.31,35.74L57.3,35.85L57.3,36.87C57.3,37.3 57.62,37.66 58.04,37.71L58.15,37.72L59.33,37.72L59.33,41.79C59.33,42.5 59.87,43.08 60.56,43.14L60.69,43.15L62.39,43.15L62.39,35.85C62.39,35.38 62.01,35 61.54,35Z"
android:fillColor="#000000"
android:fillType="nonZero"/>
<path
android:pathData="M65.08,84.13C64.01,84.13 63.13,83.26 63.13,82.18C63.13,81.11 64,80.24 65.08,80.24C66.15,80.24 67.02,81.11 67.02,82.18C67.02,83.26 66.15,84.13 65.08,84.13Z"
android:fillColor="#000000"
android:fillType="nonZero"/>
<path
android:pathData="M43.6,84.13C42.53,84.13 41.65,83.26 41.65,82.18C41.65,81.11 42.52,80.24 43.6,80.24C44.66,80.24 45.54,81.11 45.54,82.18C45.54,83.26 44.67,84.13 43.6,84.13Z"
android:fillColor="#000000"
android:fillType="nonZero"/>
</vector>

@ -17,4 +17,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/> <background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/> <foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon> </adaptive-icon>

@ -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. messy `subproject` configurations, without the pitfalls of the `buildSrc` directory.
`build-logic` is an included build, as configured in the root `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 Inside `build-logic` is a `convention` module, which defines a set of plugins that all normal
modules can use to configure themselves. modules can use to configure themselves.

@ -49,13 +49,13 @@ fun Project.configureKotlinAndroid(
allWarningsAsErrors = properties["warningsAsErrors"] as? Boolean ?: false allWarningsAsErrors = properties["warningsAsErrors"] as? Boolean ?: false
freeCompilerArgs = freeCompilerArgs + listOf( freeCompilerArgs = freeCompilerArgs + listOf(
"-Xopt-in=kotlin.RequiresOptIn", "-opt-in=kotlin.RequiresOptIn",
// Enable experimental coroutines APIs, including Flow // Enable experimental coroutines APIs, including Flow
"-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
"-Xopt-in=kotlinx.coroutines.FlowPreview", "-opt-in=kotlinx.coroutines.FlowPreview",
"-Xopt-in=kotlin.Experimental", "-opt-in=kotlin.Experimental",
// Enable experimental kotlinx serialization APIs // Enable experimental kotlinx serialization APIs
"-Xopt-in=kotlinx.serialization.ExperimentalSerializationApi" "-opt-in=kotlinx.serialization.ExperimentalSerializationApi"
) )
// Set JVM target to 1.8 // Set JVM target to 1.8

@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
@Suppress("DSL_SCOPE_VIOLATION")
plugins { plugins {
id("nowinandroid.android.library") id("nowinandroid.android.library")
id("nowinandroid.android.library.jacoco") id("nowinandroid.android.library.jacoco")

@ -19,6 +19,8 @@ import com.google.protobuf.gradle.generateProtoTasks
import com.google.protobuf.gradle.protobuf import com.google.protobuf.gradle.protobuf
import com.google.protobuf.gradle.protoc import com.google.protobuf.gradle.protoc
// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
@Suppress("DSL_SCOPE_VIOLATION")
plugins { plugins {
id("nowinandroid.android.library") id("nowinandroid.android.library")
id("nowinandroid.android.library.jacoco") id("nowinandroid.android.library.jacoco")

@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
@Suppress("DSL_SCOPE_VIOLATION")
plugins { plugins {
id("nowinandroid.android.library") id("nowinandroid.android.library")
id("nowinandroid.android.library.jacoco") id("nowinandroid.android.library.jacoco")

@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed
@Suppress("DSL_SCOPE_VIOLATION")
plugins { plugins {
id("nowinandroid.android.library") id("nowinandroid.android.library")
id("nowinandroid.android.library.jacoco") id("nowinandroid.android.library.jacoco")

@ -141,7 +141,6 @@ fun NewsResourceHeaderImage(
}, },
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.clip(RoundedCornerShape(topEnd = 24.dp, topStart = 24.dp))
.height(180.dp), .height(180.dp),
contentScale = ContentScale.Crop, contentScale = ContentScale.Crop,
model = headerImageUrl, model = headerImageUrl,

@ -47,7 +47,7 @@ The following diagram shows the events which occur and how data flows from the r
![Diagram showing how news resources are displayed on the For You screen](images/architecture-2-example.png "Diagram showing how news resources are displayed on the For You screen") ![Diagram showing how news resources are displayed on the For You screen](images/architecture-2-example.png "Diagram showing how news resources are displayed on the For You screen")
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 <kbd>SHIFT</kbd> twice).
<table> <table>
@ -276,18 +276,18 @@ View models receive streams of data as cold [flows](https://kotlin.github.io/kot
**Example: Displaying followed topics and authors** **Example: Displaying followed topics and authors**
The `FollowingViewModel` exposes `uiState` as a `StateFlow<FollowingUiState>`. This hot flow is created by combining four data streams: The `InterestsViewModel` exposes `uiState` as a `StateFlow<InterestsUiState>`. 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 author IDs which the current user is following
* List of topics * List of topics
* List of topic IDs which the current user is following * 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 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 ### Processing user interactions
@ -296,7 +296,7 @@ User actions are communicated from UI elements to view models using regular meth
**Example: Following a topic** **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 ## Further reading

@ -155,10 +155,10 @@ private fun AuthorHeader(author: Author) {
) { ) {
AsyncImage( AsyncImage(
modifier = Modifier modifier = Modifier
.padding(bottom = 12.dp)
.size(216.dp) .size(216.dp)
.align(Alignment.CenterHorizontally) .align(Alignment.CenterHorizontally)
.clip(CircleShape) .clip(CircleShape),
.padding(bottom = 12.dp),
contentScale = ContentScale.Crop, contentScale = ContentScale.Crop,
model = author.imageUrl, model = author.imageUrl,
contentDescription = "Author profile picture", contentDescription = "Author profile picture",
@ -216,6 +216,7 @@ private fun AuthorToolbar(
} }
val selected = uiState.isFollowed val selected = uiState.isFollowed
NiaFilterChip( NiaFilterChip(
modifier = Modifier.padding(horizontal = 16.dp),
checked = selected, checked = selected,
onCheckedChange = onFollowClick, onCheckedChange = onFollowClick,
) { ) {

@ -67,8 +67,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize( windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight) DpSize(maxWidth, maxHeight)
), ),
interestsSelectionState = ForYouInterestsSelectionState.Loading, interestsSelectionState = ForYouInterestsSelectionUiState.Loading,
feedState = ForYouFeedState.Loading, feedState = ForYouFeedUiState.Loading,
onAuthorCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> },
onTopicCheckedChanged = { _, _ -> }, onTopicCheckedChanged = { _, _ -> },
saveFollowedTopics = {}, saveFollowedTopics = {},
@ -92,7 +92,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize( windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight) DpSize(maxWidth, maxHeight)
), ),
interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection( interestsSelectionState =
ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -153,7 +154,7 @@ class ForYouScreenTest {
), ),
) )
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList() feed = emptyList()
), ),
onAuthorCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> },
@ -200,7 +201,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize( windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight) DpSize(maxWidth, maxHeight)
), ),
interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection( interestsSelectionState =
ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -261,7 +263,7 @@ class ForYouScreenTest {
), ),
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList() feed = emptyList()
), ),
onAuthorCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> },
@ -314,7 +316,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize( windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight) DpSize(maxWidth, maxHeight)
), ),
interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection( interestsSelectionState =
ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -375,7 +378,7 @@ class ForYouScreenTest {
), ),
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList() feed = emptyList()
), ),
onAuthorCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> },
@ -428,7 +431,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize( windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight) DpSize(maxWidth, maxHeight)
), ),
interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection( interestsSelectionState =
ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -489,7 +493,7 @@ class ForYouScreenTest {
), ),
), ),
), ),
feedState = ForYouFeedState.Loading, feedState = ForYouFeedUiState.Loading,
onAuthorCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> },
onTopicCheckedChanged = { _, _ -> }, onTopicCheckedChanged = { _, _ -> },
saveFollowedTopics = {}, saveFollowedTopics = {},
@ -523,8 +527,8 @@ class ForYouScreenTest {
windowSizeClass = WindowSizeClass.calculateFromSize( windowSizeClass = WindowSizeClass.calculateFromSize(
DpSize(maxWidth, maxHeight) DpSize(maxWidth, maxHeight)
), ),
interestsSelectionState = ForYouInterestsSelectionState.NoInterestsSelection, interestsSelectionState = ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Loading, feedState = ForYouFeedUiState.Loading,
onAuthorCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> },
onTopicCheckedChanged = { _, _ -> }, onTopicCheckedChanged = { _, _ -> },
saveFollowedTopics = {}, saveFollowedTopics = {},
@ -643,8 +647,8 @@ class ForYouScreenTest {
ForYouScreen( ForYouScreen(
windowSizeClass = windowSizeClass, windowSizeClass = windowSizeClass,
interestsSelectionState = ForYouInterestsSelectionState.NoInterestsSelection, interestsSelectionState = ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = saveableNewsResources feed = saveableNewsResources
), ),
onAuthorCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> },
@ -669,7 +673,10 @@ class ForYouScreenTest {
) )
val firstFeedItem = composeTestRule 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() .assertHasClickAction()
.fetchSemanticsNode() .fetchSemanticsNode()

@ -16,6 +16,7 @@
package com.google.samples.apps.nowinandroid.feature.foryou package com.google.samples.apps.nowinandroid.feature.foryou
import androidx.compose.foundation.background
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box 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.lazy.items
import androidx.compose.foundation.selection.toggleable import androidx.compose.foundation.selection.toggleable
import androidx.compose.foundation.shape.CircleShape 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.material.ripple.rememberRipple
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
@ -104,15 +108,29 @@ fun AuthorItem(
stateDescription = "$followDescription ${author.name}" stateDescription = "$followDescription ${author.name}"
} }
) { ) {
Box(modifier = Modifier.fillMaxWidth()) { Box(
AsyncImage( modifier = Modifier.fillMaxWidth(),
modifier = Modifier contentAlignment = Alignment.Center,
) {
val authorImageModifier = Modifier
.size(48.dp) .size(48.dp)
.clip(CircleShape), .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, model = author.imageUrl,
contentScale = ContentScale.Fit, contentScale = ContentScale.Fit,
contentDescription = null contentDescription = null
) )
}
FollowButton( FollowButton(
following = following, following = following,
backgroundColor = MaterialTheme.colorScheme.surface, backgroundColor = MaterialTheme.colorScheme.surface,

@ -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. * 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. * The feed is still loading.
*/ */
object Loading : ForYouFeedState object Loading : ForYouFeedUiState
/** /**
* The feed is loaded with the given list of news resources. * 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]. * The list of news resources contained in this [PopulatedFeed].
*/ */
val feed: List<SaveableNewsResource> val feed: List<SaveableNewsResource>
) : ForYouFeedState ) : ForYouFeedUiState
} }

@ -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. * 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. * The interests selection state is loading.
*/ */
object Loading : ForYouInterestsSelectionState object Loading : ForYouInterestsSelectionUiState
/** /**
* There is no interests selection state. * 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. * There is a interests selection state, with the given lists of topics and authors.
@ -39,7 +39,7 @@ sealed interface ForYouInterestsSelectionState {
data class WithInterestsSelection( data class WithInterestsSelection(
val topics: List<FollowableTopic>, val topics: List<FollowableTopic>,
val authors: List<FollowableAuthor> val authors: List<FollowableAuthor>
) : ForYouInterestsSelectionState { ) : ForYouInterestsSelectionUiState {
/** /**
* True if the current in-progress selection can be saved. * True if the current in-progress selection can be saved.
*/ */

@ -50,8 +50,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.filled.Search
import androidx.compose.material.icons.outlined.AccountCircle 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.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme 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.model.data.Topic
import com.google.samples.apps.nowinandroid.core.ui.LoadingWheel 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.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.NiaGradientBackground
import com.google.samples.apps.nowinandroid.core.ui.component.NiaToggleButton import com.google.samples.apps.nowinandroid.core.ui.component.NiaToggleButton
import com.google.samples.apps.nowinandroid.core.ui.component.NiaTopAppBar import com.google.samples.apps.nowinandroid.core.ui.component.NiaTopAppBar
@ -123,8 +122,8 @@ fun ForYouRoute(
@Composable @Composable
fun ForYouScreen( fun ForYouScreen(
windowSizeClass: WindowSizeClass, windowSizeClass: WindowSizeClass,
interestsSelectionState: ForYouInterestsSelectionState, interestsSelectionState: ForYouInterestsSelectionUiState,
feedState: ForYouFeedState, feedState: ForYouFeedUiState,
onTopicCheckedChanged: (String, Boolean) -> Unit, onTopicCheckedChanged: (String, Boolean) -> Unit,
onAuthorCheckedChanged: (String, Boolean) -> Unit, onAuthorCheckedChanged: (String, Boolean) -> Unit,
saveFollowedTopics: () -> Unit, saveFollowedTopics: () -> Unit,
@ -183,7 +182,7 @@ fun ForYouScreen(
// Avoid showing a second loading wheel if we already are for the interests // Avoid showing a second loading wheel if we already are for the interests
// selection // selection
showLoadingUIIfLoading = showLoadingUIIfLoading =
interestsSelectionState !is ForYouInterestsSelectionState.Loading, interestsSelectionState !is ForYouInterestsSelectionUiState.Loading,
numberOfColumns = numberOfColumns, numberOfColumns = numberOfColumns,
onNewsResourcesCheckedChanged = onNewsResourcesCheckedChanged onNewsResourcesCheckedChanged = onNewsResourcesCheckedChanged
) )
@ -212,14 +211,14 @@ fun ForYouScreen(
* states. * states.
*/ */
private fun LazyListScope.InterestsSelection( private fun LazyListScope.InterestsSelection(
interestsSelectionState: ForYouInterestsSelectionState, interestsSelectionState: ForYouInterestsSelectionUiState,
showLoadingUIIfLoading: Boolean, showLoadingUIIfLoading: Boolean,
onAuthorCheckedChanged: (String, Boolean) -> Unit, onAuthorCheckedChanged: (String, Boolean) -> Unit,
onTopicCheckedChanged: (String, Boolean) -> Unit, onTopicCheckedChanged: (String, Boolean) -> Unit,
saveFollowedTopics: () -> Unit saveFollowedTopics: () -> Unit
) { ) {
when (interestsSelectionState) { when (interestsSelectionState) {
ForYouInterestsSelectionState.Loading -> { ForYouInterestsSelectionUiState.Loading -> {
if (showLoadingUIIfLoading) { if (showLoadingUIIfLoading) {
item { item {
LoadingWheel( LoadingWheel(
@ -231,8 +230,8 @@ private fun LazyListScope.InterestsSelection(
} }
} }
} }
ForYouInterestsSelectionState.NoInterestsSelection -> Unit ForYouInterestsSelectionUiState.NoInterestsSelection -> Unit
is ForYouInterestsSelectionState.WithInterestsSelection -> { is ForYouInterestsSelectionUiState.WithInterestsSelection -> {
item { item {
Text( Text(
text = stringResource(R.string.onboarding_guidance_title), text = stringResource(R.string.onboarding_guidance_title),
@ -275,19 +274,15 @@ private fun LazyListScope.InterestsSelection(
horizontalArrangement = Arrangement.Center, horizontalArrangement = Arrangement.Center,
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Button( NiaFilledButton(
onClick = saveFollowedTopics, onClick = saveFollowedTopics,
enabled = interestsSelectionState.canSaveInterests, enabled = interestsSelectionState.canSaveInterests,
modifier = Modifier modifier = Modifier
.padding(horizontal = 40.dp) .padding(horizontal = 40.dp)
.width(364.dp), .width(364.dp)
colors = ButtonDefaults.buttonColors(
containerColor = MaterialTheme.colorScheme.onBackground
)
) { ) {
Text( Text(
text = stringResource(R.string.done), text = stringResource(R.string.done)
color = MaterialTheme.colorScheme.onPrimary
) )
} }
} }
@ -298,7 +293,7 @@ private fun LazyListScope.InterestsSelection(
@Composable @Composable
private fun TopicSelection( private fun TopicSelection(
interestsSelectionState: ForYouInterestsSelectionState.WithInterestsSelection, interestsSelectionState: ForYouInterestsSelectionUiState.WithInterestsSelection,
onTopicCheckedChanged: (String, Boolean) -> Unit, onTopicCheckedChanged: (String, Boolean) -> Unit,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
@ -412,13 +407,13 @@ fun TopicIcon(
* states. * states.
*/ */
private fun LazyListScope.Feed( private fun LazyListScope.Feed(
feedState: ForYouFeedState, feedState: ForYouFeedUiState,
showLoadingUIIfLoading: Boolean, showLoadingUIIfLoading: Boolean,
@IntRange(from = 1) numberOfColumns: Int, @IntRange(from = 1) numberOfColumns: Int,
onNewsResourcesCheckedChanged: (String, Boolean) -> Unit onNewsResourcesCheckedChanged: (String, Boolean) -> Unit
) { ) {
when (feedState) { when (feedState) {
ForYouFeedState.Loading -> { ForYouFeedUiState.Loading -> {
if (showLoadingUIIfLoading) { if (showLoadingUIIfLoading) {
item { item {
LoadingWheel( LoadingWheel(
@ -430,7 +425,7 @@ private fun LazyListScope.Feed(
} }
} }
} }
is ForYouFeedState.Success -> { is ForYouFeedUiState.Success -> {
items( items(
feedState.feed.chunked(numberOfColumns) feedState.feed.chunked(numberOfColumns)
) { saveableNewsResources -> ) { saveableNewsResources ->
@ -496,8 +491,8 @@ fun ForYouScreenLoading() {
NiaTheme { NiaTheme {
ForYouScreen( ForYouScreen(
windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(maxWidth, maxHeight)), windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(maxWidth, maxHeight)),
interestsSelectionState = ForYouInterestsSelectionState.Loading, interestsSelectionState = ForYouInterestsSelectionUiState.Loading,
feedState = ForYouFeedState.Loading, feedState = ForYouFeedUiState.Loading,
onTopicCheckedChanged = { _, _ -> }, onTopicCheckedChanged = { _, _ -> },
onAuthorCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> },
saveFollowedTopics = {}, saveFollowedTopics = {},
@ -517,7 +512,7 @@ fun ForYouScreenTopicSelection() {
NiaTheme { NiaTheme {
ForYouScreen( ForYouScreen(
windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(maxWidth, maxHeight)), windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(maxWidth, maxHeight)),
interestsSelectionState = ForYouInterestsSelectionState.WithInterestsSelection( interestsSelectionState = ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -589,7 +584,7 @@ fun ForYouScreenTopicSelection() {
) )
) )
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = saveableNewsResource, feed = saveableNewsResource,
), ),
onAuthorCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> },
@ -611,8 +606,8 @@ fun PopulatedFeed() {
NiaTheme { NiaTheme {
ForYouScreen( ForYouScreen(
windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(maxWidth, maxHeight)), windowSizeClass = WindowSizeClass.calculateFromSize(DpSize(maxWidth, maxHeight)),
interestsSelectionState = ForYouInterestsSelectionState.NoInterestsSelection, interestsSelectionState = ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = saveableNewsResource feed = saveableNewsResource
), ),
onTopicCheckedChanged = { _, _ -> }, onTopicCheckedChanged = { _, _ -> },

@ -103,7 +103,7 @@ class ForYouViewModel @Inject constructor(
mutableStateOf<Set<String>>(emptySet()) mutableStateOf<Set<String>>(emptySet())
} }
val feedState: StateFlow<ForYouFeedState> = val feedState: StateFlow<ForYouFeedUiState> =
combine( combine(
followedInterestsState, followedInterestsState,
snapshotFlow { inProgressTopicSelection }, snapshotFlow { inProgressTopicSelection },
@ -114,7 +114,7 @@ class ForYouViewModel @Inject constructor(
when (followedInterestsUserState) { when (followedInterestsUserState) {
// If we don't know the current selection state, emit loading. // If we don't know the current selection state, emit loading.
Unknown -> flowOf<ForYouFeedState>(ForYouFeedState.Loading) Unknown -> flowOf<ForYouFeedUiState>(ForYouFeedUiState.Loading)
// If the user has followed topics, use those followed topics to populate the feed // If the user has followed topics, use those followed topics to populate the feed
is FollowedInterests -> { is FollowedInterests -> {
newsRepository.getNewsResourcesStream( newsRepository.getNewsResourcesStream(
@ -126,7 +126,7 @@ class ForYouViewModel @Inject constructor(
// on the in-progress interests selections, if there are any. // on the in-progress interests selections, if there are any.
None -> { None -> {
if (inProgressTopicSelection.isEmpty() && inProgressAuthorSelection.isEmpty()) { if (inProgressTopicSelection.isEmpty() && inProgressAuthorSelection.isEmpty()) {
flowOf<ForYouFeedState>(ForYouFeedState.Success(emptyList())) flowOf<ForYouFeedUiState>(ForYouFeedUiState.Success(emptyList()))
} else { } else {
newsRepository.getNewsResourcesStream( newsRepository.getNewsResourcesStream(
filterTopicIds = inProgressTopicSelection, filterTopicIds = inProgressTopicSelection,
@ -143,10 +143,10 @@ class ForYouViewModel @Inject constructor(
.stateIn( .stateIn(
scope = viewModelScope, scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5_000), started = SharingStarted.WhileSubscribed(5_000),
initialValue = ForYouFeedState.Loading initialValue = ForYouFeedUiState.Loading
) )
val interestsSelectionState: StateFlow<ForYouInterestsSelectionState> = val interestsSelectionState: StateFlow<ForYouInterestsSelectionUiState> =
combine( combine(
followedInterestsState, followedInterestsState,
topicsRepository.getTopicsStream(), topicsRepository.getTopicsStream(),
@ -157,8 +157,8 @@ class ForYouViewModel @Inject constructor(
inProgressAuthorSelection -> inProgressAuthorSelection ->
when (followedInterestsUserState) { when (followedInterestsUserState) {
Unknown -> ForYouInterestsSelectionState.Loading Unknown -> ForYouInterestsSelectionUiState.Loading
is FollowedInterests -> ForYouInterestsSelectionState.NoInterestsSelection is FollowedInterests -> ForYouInterestsSelectionUiState.NoInterestsSelection
None -> { None -> {
val topics = availableTopics.map { topic -> val topics = availableTopics.map { topic ->
FollowableTopic( FollowableTopic(
@ -174,9 +174,9 @@ class ForYouViewModel @Inject constructor(
} }
if (topics.isEmpty() && authors.isEmpty()) { if (topics.isEmpty() && authors.isEmpty()) {
ForYouInterestsSelectionState.Loading ForYouInterestsSelectionUiState.Loading
} else { } else {
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = topics, topics = topics,
authors = authors authors = authors
) )
@ -187,7 +187,7 @@ class ForYouViewModel @Inject constructor(
.stateIn( .stateIn(
scope = viewModelScope, scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5_000), started = SharingStarted.WhileSubscribed(5_000),
initialValue = ForYouInterestsSelectionState.Loading initialValue = ForYouInterestsSelectionUiState.Loading
) )
fun updateTopicSelection(topicId: String, isChecked: Boolean) { fun updateTopicSelection(topicId: String, isChecked: Boolean) {
@ -245,7 +245,7 @@ class ForYouViewModel @Inject constructor(
private fun Flow<List<NewsResource>>.mapToFeedState( private fun Flow<List<NewsResource>>.mapToFeedState(
savedNewsResources: Set<String> savedNewsResources: Set<String>
): Flow<ForYouFeedState> = ): Flow<ForYouFeedUiState> =
filterNot { it.isEmpty() } filterNot { it.isEmpty() }
.map { newsResources -> .map { newsResources ->
newsResources.map { newsResource -> newsResources.map { newsResource ->
@ -255,5 +255,5 @@ private fun Flow<List<NewsResource>>.mapToFeedState(
) )
} }
} }
.map<List<SaveableNewsResource>, ForYouFeedState>(ForYouFeedState::Success) .map<List<SaveableNewsResource>, ForYouFeedUiState>(ForYouFeedUiState::Success)
.onStart { emit(ForYouFeedState.Loading) } .onStart { emit(ForYouFeedUiState.Loading) }

@ -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. * state updates as a single flow.
*/ */
private data class ForYouUiState( private data class ForYouUiState(
val interestsSelectionState: ForYouInterestsSelectionState, val interestsSelectionState: ForYouInterestsSelectionUiState,
val feedState: ForYouFeedState, val feedState: ForYouFeedUiState,
) )
private val ForYouViewModel.uiState private val ForYouViewModel.uiState
@ -79,8 +79,8 @@ class ForYouViewModelTest {
viewModel.uiState.test { viewModel.uiState.test {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
ForYouInterestsSelectionState.Loading, ForYouInterestsSelectionUiState.Loading,
ForYouFeedState.Loading ForYouFeedUiState.Loading
), ),
awaitItem() awaitItem()
) )
@ -93,8 +93,8 @@ class ForYouViewModelTest {
viewModel.uiState.test { viewModel.uiState.test {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
ForYouInterestsSelectionState.Loading, ForYouInterestsSelectionUiState.Loading,
ForYouFeedState.Loading ForYouFeedUiState.Loading
), ),
awaitItem() awaitItem()
) )
@ -109,8 +109,8 @@ class ForYouViewModelTest {
viewModel.uiState.test { viewModel.uiState.test {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
ForYouInterestsSelectionState.Loading, ForYouInterestsSelectionUiState.Loading,
ForYouFeedState.Loading ForYouFeedUiState.Loading
), ),
awaitItem() awaitItem()
) )
@ -125,8 +125,8 @@ class ForYouViewModelTest {
viewModel.uiState.test { viewModel.uiState.test {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
ForYouInterestsSelectionState.Loading, ForYouInterestsSelectionUiState.Loading,
ForYouFeedState.Loading ForYouFeedUiState.Loading
), ),
awaitItem() awaitItem()
) )
@ -141,8 +141,8 @@ class ForYouViewModelTest {
viewModel.uiState.test { viewModel.uiState.test {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
ForYouInterestsSelectionState.Loading, ForYouInterestsSelectionUiState.Loading,
ForYouFeedState.Loading ForYouFeedUiState.Loading
), ),
awaitItem() awaitItem()
) )
@ -166,7 +166,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -238,7 +238,7 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList() feed = emptyList()
) )
), ),
@ -263,7 +263,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -335,7 +335,7 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList() feed = emptyList()
) )
), ),
@ -359,8 +359,8 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.NoInterestsSelection, ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Loading feedState = ForYouFeedUiState.Loading
), ),
awaitItem() awaitItem()
) )
@ -370,8 +370,8 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.NoInterestsSelection, ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = sampleNewsResources.map { feed = sampleNewsResources.map {
SaveableNewsResource( SaveableNewsResource(
newsResource = it, newsResource = it,
@ -400,8 +400,8 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.NoInterestsSelection, ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Loading feedState = ForYouFeedUiState.Loading
), ),
awaitItem() awaitItem()
) )
@ -411,8 +411,8 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.NoInterestsSelection, ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = sampleNewsResources.map { feed = sampleNewsResources.map {
SaveableNewsResource( SaveableNewsResource(
newsResource = it, newsResource = it,
@ -445,7 +445,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -517,7 +517,7 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList(), feed = emptyList(),
) )
), ),
@ -526,7 +526,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -598,14 +598,14 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Loading feedState = ForYouFeedUiState.Loading
), ),
awaitItem() awaitItem()
) )
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -677,7 +677,7 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = listOf( feed = listOf(
SaveableNewsResource( SaveableNewsResource(
newsResource = sampleNewsResources[1], newsResource = sampleNewsResources[1],
@ -714,7 +714,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -786,7 +786,7 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList(), feed = emptyList(),
) )
), ),
@ -795,7 +795,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -867,14 +867,14 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Loading feedState = ForYouFeedUiState.Loading
), ),
awaitItem() awaitItem()
) )
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -946,7 +946,7 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = listOf( feed = listOf(
SaveableNewsResource( SaveableNewsResource(
newsResource = sampleNewsResources[1], newsResource = sampleNewsResources[1],
@ -981,7 +981,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -1053,7 +1053,7 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList() feed = emptyList()
) )
), ),
@ -1079,7 +1079,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -1151,7 +1151,7 @@ class ForYouViewModelTest {
) )
), ),
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList() feed = emptyList()
) )
), ),
@ -1181,8 +1181,8 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.NoInterestsSelection, ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = listOf( feed = listOf(
SaveableNewsResource( SaveableNewsResource(
newsResource = sampleNewsResources[1], newsResource = sampleNewsResources[1],
@ -1223,8 +1223,8 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.NoInterestsSelection, ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = listOf( feed = listOf(
SaveableNewsResource( SaveableNewsResource(
newsResource = sampleNewsResources[0], newsResource = sampleNewsResources[0],
@ -1262,8 +1262,8 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.NoInterestsSelection, ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = listOf( feed = listOf(
SaveableNewsResource( SaveableNewsResource(
newsResource = sampleNewsResources[1], newsResource = sampleNewsResources[1],
@ -1305,7 +1305,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -1377,7 +1377,7 @@ class ForYouViewModelTest {
) )
) )
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList() feed = emptyList()
) )
), ),
@ -1409,7 +1409,7 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.WithInterestsSelection( ForYouInterestsSelectionUiState.WithInterestsSelection(
topics = listOf( topics = listOf(
FollowableTopic( FollowableTopic(
topic = Topic( topic = Topic(
@ -1481,7 +1481,7 @@ class ForYouViewModelTest {
) )
) )
), ),
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = emptyList() feed = emptyList()
) )
), ),
@ -1506,8 +1506,8 @@ class ForYouViewModelTest {
assertEquals( assertEquals(
ForYouUiState( ForYouUiState(
interestsSelectionState = interestsSelectionState =
ForYouInterestsSelectionState.NoInterestsSelection, ForYouInterestsSelectionUiState.NoInterestsSelection,
feedState = ForYouFeedState.Success( feedState = ForYouFeedUiState.Success(
feed = listOf( feed = listOf(
SaveableNewsResource( SaveableNewsResource(
newsResource = sampleNewsResources[1], newsResource = sampleNewsResources[1],

@ -16,6 +16,7 @@
package com.google.samples.apps.nowinandroid.feature.interests package com.google.samples.apps.nowinandroid.feature.interests
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row 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.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.material.icons.Icons.Filled import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Android import androidx.compose.material.icons.filled.Person
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@ -32,7 +33,6 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp 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) { private fun InterestsIcon(topicImageUrl: String, modifier: Modifier = Modifier) {
if (topicImageUrl.isEmpty()) { if (topicImageUrl.isEmpty()) {
Icon( Icon(
imageVector = Filled.Android,
tint = Color.Magenta,
contentDescription = null,
modifier = modifier modifier = modifier
.background(MaterialTheme.colorScheme.surface)
.padding(4.dp),
imageVector = Icons.Filled.Person,
contentDescription = null, // decorative image
) )
} else { } else {
AsyncImage( AsyncImage(

@ -1,20 +1,20 @@
[versions] [versions]
accompanist = "0.21.4-beta" accompanist = "0.24.8-beta"
androidDesugarJdkLibs = "1.1.5" androidDesugarJdkLibs = "1.1.5"
androidGradlePlugin = "7.1.2" androidGradlePlugin = "7.1.2"
androidxActivity = "1.4.0" androidxActivity = "1.4.0"
androidxAppCompat = "1.3.0" androidxAppCompat = "1.3.0"
androidxCompose = "1.2.0-alpha08" androidxCompose = "1.2.0-beta01"
androidxComposeMaterial3 = "1.0.0-alpha10" androidxComposeMaterial3 = "1.0.0-alpha11"
androidxCore = "1.7.0" androidxCore = "1.7.0"
androidxCustomView = "1.0.0-alpha01" androidxCustomView = "1.0.0-alpha01"
androidxDataStore = "1.0.0" androidxDataStore = "1.0.0"
androidxEspresso = "3.3.0" androidxEspresso = "3.3.0"
androidxHiltNavigationCompose = "1.0.0-rc01" androidxHiltNavigationCompose = "1.0.0"
androidxLifecycle = "2.5.0-beta01" androidxLifecycle = "2.5.0-beta01"
androidxMacroBenchmark = "1.1.0-rc01" androidxMacroBenchmark = "1.1.0-rc02"
androidxNavigation = "2.4.0-rc01" androidxNavigation = "2.4.0-rc01"
androidxProfileinstaller = "1.2.0-alpha02" androidxProfileinstaller = "1.2.0-beta01"
androidxSavedState = "1.1.0" androidxSavedState = "1.1.0"
androidxStartup = "1.1.1" androidxStartup = "1.1.1"
androidxWindowManager = "1.0.0" androidxWindowManager = "1.0.0"
@ -27,12 +27,12 @@ hilt = "2.41"
hiltExt = "1.0.0" hiltExt = "1.0.0"
jacoco = "0.8.7" jacoco = "0.8.7"
junit4 = "4.13" junit4 = "4.13"
kotlin = "1.6.20" kotlin = "1.6.21"
kotlinxCoroutines = "1.6.0" kotlinxCoroutines = "1.6.0"
kotlinxCoroutinesTest = "1.6.0" kotlinxCoroutinesTest = "1.6.0"
kotlinxDatetime = "0.3.1" kotlinxDatetime = "0.3.1"
kotlinxSerializationJson = "1.3.1" kotlinxSerializationJson = "1.3.1"
ksp = "1.6.20-1.0.5" ksp = "1.6.21-1.0.5"
ktlint = "0.43.0" ktlint = "0.43.0"
material3 = "1.5.0-alpha05" material3 = "1.5.0-alpha05"
okhttp = "4.9.3" okhttp = "4.9.3"

Loading…
Cancel
Save