Timeline: add autoscroll on new messages

This commit is contained in:
ganfra 2022-11-23 19:10:57 +01:00
parent b294ad132c
commit 778d2455b0

View file

@ -224,6 +224,7 @@ fun TimelineItems(
onReachedLoadMore: () -> Unit,
modifier: Modifier = Modifier,
) {
Box(modifier = modifier.fillMaxWidth()) {
LazyColumn(
modifier = modifier.fillMaxWidth(),
state = lazyListState,
@ -248,6 +249,8 @@ fun TimelineItems(
}
}
}
MessagesScrollHelper(lazyListState = lazyListState, timelineItems = timelineItems)
}
}
private fun MessagesTimelineItemState.key(): String {
@ -455,6 +458,22 @@ fun MessageEventBubble(
)
}
@Composable
internal fun MessagesScrollHelper(
lazyListState: LazyListState,
timelineItems: List<MessagesTimelineItemState>,
) {
val coroutineScope = rememberCoroutineScope()
val firstVisibleItemIndex by remember { derivedStateOf { lazyListState.firstVisibleItemIndex } }
LaunchedEffect(timelineItems, firstVisibleItemIndex) {
if (!lazyListState.isScrollInProgress &&
firstVisibleItemIndex < 2
) coroutineScope.launch {
lazyListState.animateScrollToItem(0)
}
}
}
@Composable
internal fun MessagesLoadingMoreIndicator(onReachedLoadMore: () -> Unit) {
Box(