From 2d35dd56721bc66d2512280add133e574b8bc136 Mon Sep 17 00:00:00 2001 From: Tafel <35837839+tafelnl@users.noreply.github.com> Date: Wed, 18 Feb 2026 13:51:31 +0100 Subject: [PATCH 1/3] feat: add support for `headingContent` and `footerContent` slots to `Messages` --- .../chat/android/compose/ui/messages/list/Messages.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/list/Messages.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/list/Messages.kt index 8a1f69c7ca8..00d5e20df4b 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/list/Messages.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/list/Messages.kt @@ -131,6 +131,8 @@ public fun Messages( } }, itemContent: @Composable LazyItemScope.(MessageListItemState) -> Unit, + headingContent: @Composable () -> Unit = {}, + footerContent: @Composable () -> Unit = {}, ) { val lazyListState = messagesLazyListState.lazyListState val messages = messagesState.messageItems @@ -170,6 +172,10 @@ public fun Messages( reverseLayout = true, contentPadding = contentPadding, ) { + item { + headingContent() + } + if (isLoadingMoreNewMessages && !endOfNewMessages) { item { loadingMoreContent() @@ -201,6 +207,10 @@ public fun Messages( loadingMoreContent() } } + + item { + footerContent() + } } helperContent() From aa98e26296c7fb5ecf25225489c26b46abbbb8a7 Mon Sep 17 00:00:00 2001 From: tafelnl <35837839+tafelnl@users.noreply.github.com> Date: Fri, 20 Feb 2026 11:10:33 +0100 Subject: [PATCH 2/3] refactor: address review comments --- .../compose/ui/messages/list/Messages.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/list/Messages.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/list/Messages.kt index 00d5e20df4b..1c770dc4965 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/list/Messages.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/list/Messages.kt @@ -95,6 +95,8 @@ import kotlin.math.abs * @param loadingMoreContent Composable that represents the loading more content, when we're loading the next page. * @param itemModifier Modifier for styling the message item container. * @param itemContent Composable that represents the item that displays each message. + * @param headerContent The content shown at the top of the list of message items. + * @param footerContent The content shown at the bottom of the list of message items. */ @Composable @Suppress("LongParameterList", "LongMethod", "ComplexMethod") @@ -131,8 +133,8 @@ public fun Messages( } }, itemContent: @Composable LazyItemScope.(MessageListItemState) -> Unit, - headingContent: @Composable () -> Unit = {}, - footerContent: @Composable () -> Unit = {}, + headerContent: (@Composable () -> Unit)? = null, + footerContent: (@Composable () -> Unit)? = null, ) { val lazyListState = messagesLazyListState.lazyListState val messages = messagesState.messageItems @@ -172,8 +174,10 @@ public fun Messages( reverseLayout = true, contentPadding = contentPadding, ) { - item { - headingContent() + footerContent?.let { content -> + item { + content.invoke() + } } if (isLoadingMoreNewMessages && !endOfNewMessages) { @@ -208,8 +212,10 @@ public fun Messages( } } - item { - footerContent() + headerContent?.let { content -> + item { + content.invoke() + } } } From ad4f3f6dc18666d47cb744ea414d93050c79bf08 Mon Sep 17 00:00:00 2001 From: tafelnl <35837839+tafelnl@users.noreply.github.com> Date: Fri, 20 Feb 2026 11:30:15 +0100 Subject: [PATCH 3/3] chore: run `./gradlew apiDump spotlessApply` --- stream-chat-android-compose/api/stream-chat-android-compose.api | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stream-chat-android-compose/api/stream-chat-android-compose.api b/stream-chat-android-compose/api/stream-chat-android-compose.api index b3de3922358..40d0be2850d 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -2664,7 +2664,7 @@ public final class io/getstream/chat/android/compose/ui/messages/list/MessageLis } public final class io/getstream/chat/android/compose/ui/messages/list/MessagesKt { - public static final fun Messages (Lio/getstream/chat/android/ui/common/state/messages/list/MessageListState;Lio/getstream/chat/android/compose/ui/messages/list/MessagesLazyListState;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lio/getstream/chat/android/compose/ui/messages/list/ThreadMessagesStart;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function5;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;III)V + public static final fun Messages (Lio/getstream/chat/android/ui/common/state/messages/list/MessageListState;Lio/getstream/chat/android/compose/ui/messages/list/MessagesLazyListState;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lio/getstream/chat/android/compose/ui/messages/list/ThreadMessagesStart;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function5;Lkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;III)V } public final class io/getstream/chat/android/compose/ui/messages/list/MessagesLazyListState {