Uses animateItemPlacement to show new Notes and update the size of current ones.

This commit is contained in:
Vitor Pamplona
2023-06-13 16:31:23 -04:00
parent 1cd39e0d8f
commit a01a060abc
2 changed files with 14 additions and 10 deletions
@@ -2,6 +2,7 @@ package com.vitorpamplona.amethyst.ui.screen
import androidx.compose.animation.Crossfade import androidx.compose.animation.Crossfade
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
@@ -152,6 +153,7 @@ fun RenderCardFeed(
} }
} }
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
private fun FeedLoaded( private fun FeedLoaded(
state: CardFeedState.Loaded, state: CardFeedState.Loaded,
@@ -160,11 +162,6 @@ private fun FeedLoaded(
nav: (String) -> Unit, nav: (String) -> Unit,
routeForLastRead: String routeForLastRead: String
) { ) {
val defaultModifier = remember {
Modifier
.fillMaxWidth()
}
LazyColumn( LazyColumn(
modifier = remember { Modifier.fillMaxSize() }, modifier = remember { Modifier.fillMaxSize() },
contentPadding = remember { contentPadding = remember {
@@ -176,6 +173,11 @@ private fun FeedLoaded(
state = listState state = listState
) { ) {
itemsIndexed(state.feed.value, key = { _, item -> item.id() }) { _, item -> itemsIndexed(state.feed.value, key = { _, item -> item.id() }) { _, item ->
val defaultModifier = remember {
Modifier
.fillMaxWidth().animateItemPlacement()
}
Row(defaultModifier) { Row(defaultModifier) {
RenderCardItem(item, accountViewModel, nav, routeForLastRead) RenderCardItem(item, accountViewModel, nav, routeForLastRead)
} }
@@ -2,6 +2,7 @@ package com.vitorpamplona.amethyst.ui.screen
import androidx.compose.animation.Crossfade import androidx.compose.animation.Crossfade
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -167,6 +168,7 @@ private fun WatchScrollToTop(
} }
} }
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
private fun FeedLoaded( private fun FeedLoaded(
state: FeedState.Loaded, state: FeedState.Loaded,
@@ -179,11 +181,6 @@ private fun FeedLoaded(
Modifier Modifier
} }
val defaultModifier = remember {
Modifier
.fillMaxWidth()
}
LazyColumn( LazyColumn(
contentPadding = PaddingValues( contentPadding = PaddingValues(
top = 10.dp, top = 10.dp,
@@ -192,6 +189,11 @@ private fun FeedLoaded(
state = listState state = listState
) { ) {
itemsIndexed(state.feed.value, key = { _, item -> item.idHex }) { _, item -> itemsIndexed(state.feed.value, key = { _, item -> item.idHex }) { _, item ->
val defaultModifier = remember {
Modifier
.fillMaxWidth().animateItemPlacement()
}
Row(defaultModifier) { Row(defaultModifier) {
NoteCompose( NoteCompose(
item, item,