From c587d45e921dcfb1aed04bfdb61dba39e2ac53fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Mion?= Date: Tue, 19 May 2026 15:54:50 +0100 Subject: [PATCH 1/6] Label channel header avatar click action --- .../android/compose/ui/messages/header/ChannelHeader.kt | 8 +++++++- .../src/main/res/values-es/strings.xml | 1 + .../src/main/res/values-fr/strings.xml | 1 + .../src/main/res/values-hi/strings.xml | 1 + .../src/main/res/values-in/strings.xml | 1 + .../src/main/res/values-it/strings.xml | 1 + .../src/main/res/values-ja/strings.xml | 1 + .../src/main/res/values-ko/strings.xml | 1 + .../src/main/res/values/strings.xml | 1 + 9 files changed, 15 insertions(+), 1 deletion(-) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt index 57ab982d2b0..3311b15a110 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt @@ -32,6 +32,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.Role import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -263,12 +264,17 @@ internal fun DefaultChannelHeaderTrailingContent( currentUser: User?, onClick: ((Channel) -> Unit)?, ) { + val openInfoLabel = stringResource(R.string.stream_compose_channel_header_open_info) ChatTheme.componentFactory.ChannelAvatar( params = ChannelAvatarParams( modifier = Modifier .size(40.dp) .ifNotNull(onClick) { callback -> - clickable(bounded = false) { callback(channel) } + clickable( + bounded = false, + onClickLabel = openInfoLabel, + role = Role.Button, + ) { callback(channel) } }, channel = channel, currentUser = currentUser, diff --git a/stream-chat-android-compose/src/main/res/values-es/strings.xml b/stream-chat-android-compose/src/main/res/values-es/strings.xml index 583506bb733..3e9a1cf40e4 100644 --- a/stream-chat-android-compose/src/main/res/values-es/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-es/strings.xml @@ -56,6 +56,7 @@ "+%1$d" "Bloquear usuario" "Cancelar" + "Abrir información de la conversación" "silenciado" "Abrir conversación" "Abrir opciones de conversación" diff --git a/stream-chat-android-compose/src/main/res/values-fr/strings.xml b/stream-chat-android-compose/src/main/res/values-fr/strings.xml index 166533c2038..7dcec754ea3 100644 --- a/stream-chat-android-compose/src/main/res/values-fr/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-fr/strings.xml @@ -56,6 +56,7 @@ "+%1$d" "Bloquer l\'utilisateur" "Annuler" + "Ouvrir les informations de la conversation" "en sourdine" "Ouvrir la conversation" "Ouvrir les options de conversation" diff --git a/stream-chat-android-compose/src/main/res/values-hi/strings.xml b/stream-chat-android-compose/src/main/res/values-hi/strings.xml index 06feb0d75d1..c6893056cf2 100644 --- a/stream-chat-android-compose/src/main/res/values-hi/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-hi/strings.xml @@ -116,6 +116,7 @@ "+%1$d" "उपयोगकर्ता को ब्लॉक करें" "रद्द करें" + "बातचीत की जानकारी खोलें" "म्यूट किया गया" "बातचीत खोलें" "बातचीत के विकल्प खोलें" diff --git a/stream-chat-android-compose/src/main/res/values-in/strings.xml b/stream-chat-android-compose/src/main/res/values-in/strings.xml index e6761d4c916..f7a5e756e96 100644 --- a/stream-chat-android-compose/src/main/res/values-in/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-in/strings.xml @@ -56,6 +56,7 @@ "+%1$d" "Blokir pengguna" "Batal" + "Buka info percakapan" "dibisukan" "Buka percakapan" "Buka opsi percakapan" diff --git a/stream-chat-android-compose/src/main/res/values-it/strings.xml b/stream-chat-android-compose/src/main/res/values-it/strings.xml index 745853a71ed..3e5d14796c4 100644 --- a/stream-chat-android-compose/src/main/res/values-it/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-it/strings.xml @@ -116,6 +116,7 @@ "+%1$d" "Blocca utente" "Annulla" + "Apri info conversazione" "silenziato" "Apri conversazione" "Apri opzioni conversazione" diff --git a/stream-chat-android-compose/src/main/res/values-ja/strings.xml b/stream-chat-android-compose/src/main/res/values-ja/strings.xml index 684598109c5..55f5803a2f9 100644 --- a/stream-chat-android-compose/src/main/res/values-ja/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-ja/strings.xml @@ -56,6 +56,7 @@ "+%1$d" "ユーザーをブロック" "キャンセル" + "会話の情報を開く" "ミュート中" "会話を開く" "会話のオプションを開く" diff --git a/stream-chat-android-compose/src/main/res/values-ko/strings.xml b/stream-chat-android-compose/src/main/res/values-ko/strings.xml index 43a5c27df6f..8a03d26116c 100644 --- a/stream-chat-android-compose/src/main/res/values-ko/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-ko/strings.xml @@ -56,6 +56,7 @@ "+%1$d" "사용자 차단" "취소" + "대화 정보 열기" "음소거됨" "대화 열기" "대화 옵션 열기" diff --git a/stream-chat-android-compose/src/main/res/values/strings.xml b/stream-chat-android-compose/src/main/res/values/strings.xml index e9d2c1be3a0..716721e8b75 100644 --- a/stream-chat-android-compose/src/main/res/values/strings.xml +++ b/stream-chat-android-compose/src/main/res/values/strings.xml @@ -297,6 +297,7 @@ Open conversation Open conversation options + Open conversation info muted %d unread message From b6b2ed91e4ed73f6188ff66ba50ebccb64fd0330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Mion?= Date: Wed, 20 May 2026 09:41:03 +0100 Subject: [PATCH 2/6] Let integrators supply the channel avatar click label --- .../compose/sample/ui/MessagesActivity.kt | 3 +++ .../src/main/res/values/strings.xml | 2 ++ .../api/stream-chat-android-compose.api | 24 +++++++++++-------- .../compose/ui/messages/ChannelScreen.kt | 5 ++++ .../ui/messages/header/ChannelHeader.kt | 8 +++++-- .../compose/ui/theme/ChatComponentFactory.kt | 2 ++ .../ui/theme/ChatComponentFactoryParams.kt | 4 ++++ .../src/main/res/values-es/strings.xml | 1 - .../src/main/res/values-fr/strings.xml | 1 - .../src/main/res/values-hi/strings.xml | 1 - .../src/main/res/values-in/strings.xml | 1 - .../src/main/res/values-it/strings.xml | 1 - .../src/main/res/values-ja/strings.xml | 1 - .../src/main/res/values-ko/strings.xml | 1 - .../src/main/res/values/strings.xml | 1 - 15 files changed, 36 insertions(+), 20 deletions(-) diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/MessagesActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/MessagesActivity.kt index 81f551cb8c5..1b1188ad560 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/MessagesActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/MessagesActivity.kt @@ -23,6 +23,8 @@ import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource +import io.getstream.chat.android.compose.sample.R import io.getstream.chat.android.compose.sample.data.customSettings import io.getstream.chat.android.compose.sample.feature.channel.isGroupChannel import io.getstream.chat.android.compose.sample.ui.channel.DirectChannelInfoActivity @@ -90,6 +92,7 @@ class MessagesActivity : ComponentActivity() { viewModelFactory = factory, onBackPressed = { finish() }, onChannelAvatarClick = ::openChannelInfo, + onChannelAvatarClickLabel = stringResource(R.string.messages_open_channel_info), ) } diff --git a/stream-chat-android-compose-sample/src/main/res/values/strings.xml b/stream-chat-android-compose-sample/src/main/res/values/strings.xml index 58d006c48f3..0e1195eed2b 100644 --- a/stream-chat-android-compose-sample/src/main/res/values/strings.xml +++ b/stream-chat-android-compose-sample/src/main/res/values/strings.xml @@ -127,5 +127,7 @@ Failed to load more media attachments Failed to load more files attachments + + Open channel info 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 67ec9635600..cdf3c8d19c0 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -1745,7 +1745,7 @@ public final class io/getstream/chat/android/compose/ui/mentions/MentionListKt { } public final class io/getstream/chat/android/compose/ui/messages/ChannelScreenKt { - public static final fun ChannelScreen (Lio/getstream/chat/android/compose/viewmodel/messages/ChannelViewModelFactory;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ZZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V + public static final fun ChannelScreen (Lio/getstream/chat/android/compose/viewmodel/messages/ChannelViewModelFactory;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ZZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;III)V public static final fun MessageDialogs (Lio/getstream/chat/android/compose/viewmodel/messages/MessageListViewModel;Landroidx/compose/runtime/Composer;I)V public static final fun MessageMenus (Landroidx/compose/foundation/layout/BoxScope;Lio/getstream/chat/android/compose/viewmodel/messages/MessageListViewModel;Lio/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModel;ZZLandroidx/compose/runtime/Composer;I)V public static final fun MessageModerationDialog (Lio/getstream/chat/android/compose/viewmodel/messages/MessageListViewModel;Lio/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModel;ZZLandroidx/compose/runtime/Composer;I)V @@ -2099,7 +2099,7 @@ public final class io/getstream/chat/android/compose/ui/messages/composer/intern } public final class io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderKt { - public static final fun ChannelHeader (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V + public static final fun ChannelHeader (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V } public final class io/getstream/chat/android/compose/ui/messages/header/ComposableSingletons$ChannelHeaderKt { @@ -2664,9 +2664,10 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderLeadi public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderParams { public static final field $stable I - public fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V - public synthetic fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)V + public synthetic fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Lio/getstream/chat/android/models/Channel; + public final fun component10 ()Ljava/lang/String; public final fun component2 ()Lio/getstream/chat/android/models/ConnectionState; public final fun component3 ()Landroidx/compose/ui/Modifier; public final fun component4 ()Lio/getstream/chat/android/models/User; @@ -2675,8 +2676,8 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderParam public final fun component7 ()Lkotlin/jvm/functions/Function0; public final fun component8 ()Lkotlin/jvm/functions/Function1; public final fun component9 ()Lkotlin/jvm/functions/Function1; - public final fun copy (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams; - public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams; + public final fun copy (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams; + public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams; public fun equals (Ljava/lang/Object;)Z public final fun getChannel ()Lio/getstream/chat/android/models/Channel; public final fun getConnectionState ()Lio/getstream/chat/android/models/ConnectionState; @@ -2685,6 +2686,7 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderParam public final fun getModifier ()Landroidx/compose/ui/Modifier; public final fun getOnBackPressed ()Lkotlin/jvm/functions/Function0; public final fun getOnChannelAvatarClick ()Lkotlin/jvm/functions/Function1; + public final fun getOnChannelAvatarClickLabel ()Ljava/lang/String; public final fun getOnHeaderTitleClick ()Lkotlin/jvm/functions/Function1; public final fun getTypingUsers ()Ljava/util/List; public fun hashCode ()I @@ -2693,17 +2695,19 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderParam public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderTrailingContentParams { public static final field $stable I - public fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;)V - public synthetic fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)V + public synthetic fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Lio/getstream/chat/android/models/Channel; public final fun component2 ()Lio/getstream/chat/android/models/User; public final fun component3 ()Lkotlin/jvm/functions/Function1; - public final fun copy (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderTrailingContentParams; - public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderTrailingContentParams;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderTrailingContentParams; + public final fun component4 ()Ljava/lang/String; + public final fun copy (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderTrailingContentParams; + public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderTrailingContentParams;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderTrailingContentParams; public fun equals (Ljava/lang/Object;)Z public final fun getChannel ()Lio/getstream/chat/android/models/Channel; public final fun getCurrentUser ()Lio/getstream/chat/android/models/User; public final fun getOnClick ()Lkotlin/jvm/functions/Function1; + public final fun getOnClickLabel ()Ljava/lang/String; public fun hashCode ()I public fun toString ()Ljava/lang/String; } diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/ChannelScreen.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/ChannelScreen.kt index 720102be9fe..7ce6c771327 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/ChannelScreen.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/ChannelScreen.kt @@ -112,6 +112,7 @@ import kotlinx.coroutines.launch * back button. * @param onHeaderTitleClick Handler for when the user taps on the header section. * @param onChannelAvatarClick Handler called when the user taps on the channel avatar. + * @param onChannelAvatarClickLabel Semantic / accessibility label for [onChannelAvatarClick]. * @param skipPushNotification If new messages should skip triggering a push notification when sent. False by default. * @param skipEnrichUrl If new messages being sent, or existing ones being updated should skip enriching the URL. * If URL is not enriched, it will not be displayed as a link attachment. False by default. @@ -129,6 +130,7 @@ public fun ChannelScreen( onBackPressed: () -> Unit = {}, onHeaderTitleClick: ((channel: Channel) -> Unit)? = null, onChannelAvatarClick: ((Channel) -> Unit)? = null, + onChannelAvatarClickLabel: String? = null, skipPushNotification: Boolean = false, skipEnrichUrl: Boolean = false, verticalArrangement: Arrangement.Vertical = Arrangement.Bottom, @@ -139,6 +141,7 @@ public fun ChannelScreen( backAction = it, onHeaderTitleClick = onHeaderTitleClick, onChannelAvatarClick = onChannelAvatarClick, + onChannelAvatarClickLabel = onChannelAvatarClickLabel, ) }, bottomBarContent: @Composable () -> Unit = { @@ -331,6 +334,7 @@ internal fun DefaultTopBarContent( backAction: BackAction, onHeaderTitleClick: ((channel: Channel) -> Unit)?, onChannelAvatarClick: ((Channel) -> Unit)?, + onChannelAvatarClickLabel: String? = null, ) { val listViewModel = viewModel(MessageListViewModel::class.java, factory = viewModelFactory) @@ -348,6 +352,7 @@ internal fun DefaultTopBarContent( onBackPressed = backAction, onHeaderTitleClick = onHeaderTitleClick, onChannelAvatarClick = onChannelAvatarClick, + onChannelAvatarClickLabel = onChannelAvatarClickLabel, modifier = Modifier.defaultMinSize(minHeight = 72.dp), ), ) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt index 3311b15a110..1dae1f5188a 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt @@ -69,6 +69,7 @@ import io.getstream.chat.android.ui.common.state.messages.MessageMode * @param onBackPressed Handler that propagates the back button click event. * @param onHeaderTitleClick Action handler when the user taps on the header title section. * @param onChannelAvatarClick Action handler called when the user taps on the channel avatar. + * @param onChannelAvatarClickLabel Semantic / accessibility label for [onChannelAvatarClick]. * @param leadingContent The content shown at the start of the header, by default a [BackButton]. * @param centerContent The content shown in the middle of the header and represents the core information, by default * [DefaultChannelHeaderCenterContent]. @@ -85,6 +86,7 @@ public fun ChannelHeader( onBackPressed: () -> Unit = {}, onHeaderTitleClick: ((Channel) -> Unit)? = null, onChannelAvatarClick: ((Channel) -> Unit)? = null, + onChannelAvatarClickLabel: String? = null, leadingContent: @Composable RowScope.() -> Unit = { with(ChatTheme.componentFactory) { ChannelHeaderLeadingContent( @@ -116,6 +118,7 @@ public fun ChannelHeader( channel = channel, currentUser = currentUser, onClick = onChannelAvatarClick, + onClickLabel = onChannelAvatarClickLabel, ), ) } @@ -257,14 +260,15 @@ internal fun DefaultChannelHeaderSubtitle( * @param channel The channel used to display the avatar. * @param currentUser The current user. Used for choosing which avatar to display. * @param onClick The handler called when the user taps on the channel avatar. + * @param onClickLabel Semantic / accessibility label for [onClick]. */ @Composable internal fun DefaultChannelHeaderTrailingContent( channel: Channel, currentUser: User?, onClick: ((Channel) -> Unit)?, + onClickLabel: String? = null, ) { - val openInfoLabel = stringResource(R.string.stream_compose_channel_header_open_info) ChatTheme.componentFactory.ChannelAvatar( params = ChannelAvatarParams( modifier = Modifier @@ -272,7 +276,7 @@ internal fun DefaultChannelHeaderTrailingContent( .ifNotNull(onClick) { callback -> clickable( bounded = false, - onClickLabel = openInfoLabel, + onClickLabel = onClickLabel, role = Role.Button, ) { callback(channel) } }, diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt index 3dbc3c76522..08d33cc51e1 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt @@ -634,6 +634,7 @@ public interface ChatComponentFactory { onBackPressed = params.onBackPressed, onHeaderTitleClick = params.onHeaderTitleClick, onChannelAvatarClick = params.onChannelAvatarClick, + onChannelAvatarClickLabel = params.onChannelAvatarClickLabel, ) } @@ -677,6 +678,7 @@ public interface ChatComponentFactory { channel = params.channel, currentUser = params.currentUser, onClick = params.onClick, + onClickLabel = params.onClickLabel, ) } diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt index 7e52eeaa646..71579d00e51 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt @@ -395,6 +395,7 @@ public data class SearchResultItemTrailingContentParams( * @param onBackPressed Action invoked when the back button is pressed. * @param onHeaderTitleClick Action invoked when the header title is clicked. * @param onChannelAvatarClick Action invoked when the channel avatar is clicked. + * @param onChannelAvatarClickLabel Semantic / accessibility label for [onChannelAvatarClick]. */ public data class ChannelHeaderParams( val channel: Channel, @@ -406,6 +407,7 @@ public data class ChannelHeaderParams( val onBackPressed: () -> Unit = {}, val onHeaderTitleClick: ((Channel) -> Unit)? = null, val onChannelAvatarClick: ((Channel) -> Unit)? = null, + val onChannelAvatarClickLabel: String? = null, ) /** @@ -444,11 +446,13 @@ public data class ChannelHeaderCenterContentParams( * @param channel The channel to display. * @param currentUser The currently logged in user. * @param onClick Action invoked when the trailing content is clicked. + * @param onClickLabel Semantic / accessibility label for [onClick]. */ public data class ChannelHeaderTrailingContentParams( val channel: Channel, val currentUser: User?, val onClick: ((Channel) -> Unit)? = null, + val onClickLabel: String? = null, ) /** diff --git a/stream-chat-android-compose/src/main/res/values-es/strings.xml b/stream-chat-android-compose/src/main/res/values-es/strings.xml index 3e9a1cf40e4..583506bb733 100644 --- a/stream-chat-android-compose/src/main/res/values-es/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-es/strings.xml @@ -56,7 +56,6 @@ "+%1$d" "Bloquear usuario" "Cancelar" - "Abrir información de la conversación" "silenciado" "Abrir conversación" "Abrir opciones de conversación" diff --git a/stream-chat-android-compose/src/main/res/values-fr/strings.xml b/stream-chat-android-compose/src/main/res/values-fr/strings.xml index 7dcec754ea3..166533c2038 100644 --- a/stream-chat-android-compose/src/main/res/values-fr/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-fr/strings.xml @@ -56,7 +56,6 @@ "+%1$d" "Bloquer l\'utilisateur" "Annuler" - "Ouvrir les informations de la conversation" "en sourdine" "Ouvrir la conversation" "Ouvrir les options de conversation" diff --git a/stream-chat-android-compose/src/main/res/values-hi/strings.xml b/stream-chat-android-compose/src/main/res/values-hi/strings.xml index c6893056cf2..06feb0d75d1 100644 --- a/stream-chat-android-compose/src/main/res/values-hi/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-hi/strings.xml @@ -116,7 +116,6 @@ "+%1$d" "उपयोगकर्ता को ब्लॉक करें" "रद्द करें" - "बातचीत की जानकारी खोलें" "म्यूट किया गया" "बातचीत खोलें" "बातचीत के विकल्प खोलें" diff --git a/stream-chat-android-compose/src/main/res/values-in/strings.xml b/stream-chat-android-compose/src/main/res/values-in/strings.xml index f7a5e756e96..e6761d4c916 100644 --- a/stream-chat-android-compose/src/main/res/values-in/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-in/strings.xml @@ -56,7 +56,6 @@ "+%1$d" "Blokir pengguna" "Batal" - "Buka info percakapan" "dibisukan" "Buka percakapan" "Buka opsi percakapan" diff --git a/stream-chat-android-compose/src/main/res/values-it/strings.xml b/stream-chat-android-compose/src/main/res/values-it/strings.xml index 3e5d14796c4..745853a71ed 100644 --- a/stream-chat-android-compose/src/main/res/values-it/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-it/strings.xml @@ -116,7 +116,6 @@ "+%1$d" "Blocca utente" "Annulla" - "Apri info conversazione" "silenziato" "Apri conversazione" "Apri opzioni conversazione" diff --git a/stream-chat-android-compose/src/main/res/values-ja/strings.xml b/stream-chat-android-compose/src/main/res/values-ja/strings.xml index 55f5803a2f9..684598109c5 100644 --- a/stream-chat-android-compose/src/main/res/values-ja/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-ja/strings.xml @@ -56,7 +56,6 @@ "+%1$d" "ユーザーをブロック" "キャンセル" - "会話の情報を開く" "ミュート中" "会話を開く" "会話のオプションを開く" diff --git a/stream-chat-android-compose/src/main/res/values-ko/strings.xml b/stream-chat-android-compose/src/main/res/values-ko/strings.xml index 8a03d26116c..43a5c27df6f 100644 --- a/stream-chat-android-compose/src/main/res/values-ko/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-ko/strings.xml @@ -56,7 +56,6 @@ "+%1$d" "사용자 차단" "취소" - "대화 정보 열기" "음소거됨" "대화 열기" "대화 옵션 열기" diff --git a/stream-chat-android-compose/src/main/res/values/strings.xml b/stream-chat-android-compose/src/main/res/values/strings.xml index 716721e8b75..e9d2c1be3a0 100644 --- a/stream-chat-android-compose/src/main/res/values/strings.xml +++ b/stream-chat-android-compose/src/main/res/values/strings.xml @@ -297,7 +297,6 @@ Open conversation Open conversation options - Open conversation info muted %d unread message From 4ae29a03b08ec4af364f80507cf2d8a14da177e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Mion?= Date: Wed, 20 May 2026 09:51:46 +0100 Subject: [PATCH 3/6] Let integrators supply the channel header title click label --- .../api/stream-chat-android-compose.api | 28 +++++++++++-------- .../compose/ui/messages/ChannelScreen.kt | 5 ++++ .../ui/messages/header/ChannelHeader.kt | 16 +++++++---- .../compose/ui/theme/ChatComponentFactory.kt | 2 ++ .../ui/theme/ChatComponentFactoryParams.kt | 4 +++ 5 files changed, 37 insertions(+), 18 deletions(-) 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 cdf3c8d19c0..a3392d6f291 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -1745,7 +1745,7 @@ public final class io/getstream/chat/android/compose/ui/mentions/MentionListKt { } public final class io/getstream/chat/android/compose/ui/messages/ChannelScreenKt { - public static final fun ChannelScreen (Lio/getstream/chat/android/compose/viewmodel/messages/ChannelViewModelFactory;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ZZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;III)V + public static final fun ChannelScreen (Lio/getstream/chat/android/compose/viewmodel/messages/ChannelViewModelFactory;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ZZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;III)V public static final fun MessageDialogs (Lio/getstream/chat/android/compose/viewmodel/messages/MessageListViewModel;Landroidx/compose/runtime/Composer;I)V public static final fun MessageMenus (Landroidx/compose/foundation/layout/BoxScope;Lio/getstream/chat/android/compose/viewmodel/messages/MessageListViewModel;Lio/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModel;ZZLandroidx/compose/runtime/Composer;I)V public static final fun MessageModerationDialog (Lio/getstream/chat/android/compose/viewmodel/messages/MessageListViewModel;Lio/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModel;ZZLandroidx/compose/runtime/Composer;I)V @@ -2099,7 +2099,7 @@ public final class io/getstream/chat/android/compose/ui/messages/composer/intern } public final class io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderKt { - public static final fun ChannelHeader (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V + public static final fun ChannelHeader (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V } public final class io/getstream/chat/android/compose/ui/messages/header/ComposableSingletons$ChannelHeaderKt { @@ -2627,8 +2627,8 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelFilesAttach public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderCenterContentParams { public static final field $stable I - public fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function1;)V - public synthetic fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)V + public synthetic fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Lio/getstream/chat/android/models/Channel; public final fun component2 ()Lio/getstream/chat/android/models/ConnectionState; public final fun component3 ()Landroidx/compose/ui/Modifier; @@ -2636,8 +2636,9 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderCente public final fun component5 ()Ljava/util/List; public final fun component6 ()Lio/getstream/chat/android/ui/common/state/messages/MessageMode; public final fun component7 ()Lkotlin/jvm/functions/Function1; - public final fun copy (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function1;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderCenterContentParams; - public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderCenterContentParams;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderCenterContentParams; + public final fun component8 ()Ljava/lang/String; + public final fun copy (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderCenterContentParams; + public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderCenterContentParams;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderCenterContentParams; public fun equals (Ljava/lang/Object;)Z public final fun getChannel ()Lio/getstream/chat/android/models/Channel; public final fun getConnectionState ()Lio/getstream/chat/android/models/ConnectionState; @@ -2645,6 +2646,7 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderCente public final fun getMessageMode ()Lio/getstream/chat/android/ui/common/state/messages/MessageMode; public final fun getModifier ()Landroidx/compose/ui/Modifier; public final fun getOnClick ()Lkotlin/jvm/functions/Function1; + public final fun getOnClickLabel ()Ljava/lang/String; public final fun getTypingUsers ()Ljava/util/List; public fun hashCode ()I public fun toString ()Ljava/lang/String; @@ -2664,10 +2666,11 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderLeadi public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderParams { public static final field $stable I - public fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)V - public synthetic fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)V + public synthetic fun (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Lio/getstream/chat/android/models/Channel; - public final fun component10 ()Ljava/lang/String; + public final fun component10 ()Lkotlin/jvm/functions/Function1; + public final fun component11 ()Ljava/lang/String; public final fun component2 ()Lio/getstream/chat/android/models/ConnectionState; public final fun component3 ()Landroidx/compose/ui/Modifier; public final fun component4 ()Lio/getstream/chat/android/models/User; @@ -2675,9 +2678,9 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderParam public final fun component6 ()Lio/getstream/chat/android/ui/common/state/messages/MessageMode; public final fun component7 ()Lkotlin/jvm/functions/Function0; public final fun component8 ()Lkotlin/jvm/functions/Function1; - public final fun component9 ()Lkotlin/jvm/functions/Function1; - public final fun copy (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams; - public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams; + public final fun component9 ()Ljava/lang/String; + public final fun copy (Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams; + public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/ConnectionState;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageMode;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Ljava/lang/String;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/ChannelHeaderParams; public fun equals (Ljava/lang/Object;)Z public final fun getChannel ()Lio/getstream/chat/android/models/Channel; public final fun getConnectionState ()Lio/getstream/chat/android/models/ConnectionState; @@ -2688,6 +2691,7 @@ public final class io/getstream/chat/android/compose/ui/theme/ChannelHeaderParam public final fun getOnChannelAvatarClick ()Lkotlin/jvm/functions/Function1; public final fun getOnChannelAvatarClickLabel ()Ljava/lang/String; public final fun getOnHeaderTitleClick ()Lkotlin/jvm/functions/Function1; + public final fun getOnHeaderTitleClickLabel ()Ljava/lang/String; public final fun getTypingUsers ()Ljava/util/List; public fun hashCode ()I public fun toString ()Ljava/lang/String; diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/ChannelScreen.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/ChannelScreen.kt index 7ce6c771327..f757ba0a4f0 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/ChannelScreen.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/ChannelScreen.kt @@ -111,6 +111,7 @@ import kotlinx.coroutines.launch * @param onBackPressed Handler for when the user taps on the Back button and/or the system * back button. * @param onHeaderTitleClick Handler for when the user taps on the header section. + * @param onHeaderTitleClickLabel Semantic / accessibility label for [onHeaderTitleClick]. * @param onChannelAvatarClick Handler called when the user taps on the channel avatar. * @param onChannelAvatarClickLabel Semantic / accessibility label for [onChannelAvatarClick]. * @param skipPushNotification If new messages should skip triggering a push notification when sent. False by default. @@ -129,6 +130,7 @@ public fun ChannelScreen( viewModelFactory: ChannelViewModelFactory, onBackPressed: () -> Unit = {}, onHeaderTitleClick: ((channel: Channel) -> Unit)? = null, + onHeaderTitleClickLabel: String? = null, onChannelAvatarClick: ((Channel) -> Unit)? = null, onChannelAvatarClickLabel: String? = null, skipPushNotification: Boolean = false, @@ -140,6 +142,7 @@ public fun ChannelScreen( viewModelFactory = viewModelFactory, backAction = it, onHeaderTitleClick = onHeaderTitleClick, + onHeaderTitleClickLabel = onHeaderTitleClickLabel, onChannelAvatarClick = onChannelAvatarClick, onChannelAvatarClickLabel = onChannelAvatarClickLabel, ) @@ -334,6 +337,7 @@ internal fun DefaultTopBarContent( backAction: BackAction, onHeaderTitleClick: ((channel: Channel) -> Unit)?, onChannelAvatarClick: ((Channel) -> Unit)?, + onHeaderTitleClickLabel: String? = null, onChannelAvatarClickLabel: String? = null, ) { val listViewModel = viewModel(MessageListViewModel::class.java, factory = viewModelFactory) @@ -351,6 +355,7 @@ internal fun DefaultTopBarContent( messageMode = messageMode, onBackPressed = backAction, onHeaderTitleClick = onHeaderTitleClick, + onHeaderTitleClickLabel = onHeaderTitleClickLabel, onChannelAvatarClick = onChannelAvatarClick, onChannelAvatarClickLabel = onChannelAvatarClickLabel, modifier = Modifier.defaultMinSize(minHeight = 72.dp), diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt index 1dae1f5188a..1fda242c1fc 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt @@ -68,6 +68,7 @@ import io.getstream.chat.android.ui.common.state.messages.MessageMode * @param messageMode The current message mode, that changes the header content, if we're in a Thread. * @param onBackPressed Handler that propagates the back button click event. * @param onHeaderTitleClick Action handler when the user taps on the header title section. + * @param onHeaderTitleClickLabel Semantic / accessibility label for [onHeaderTitleClick]. * @param onChannelAvatarClick Action handler called when the user taps on the channel avatar. * @param onChannelAvatarClickLabel Semantic / accessibility label for [onChannelAvatarClick]. * @param leadingContent The content shown at the start of the header, by default a [BackButton]. @@ -85,6 +86,7 @@ public fun ChannelHeader( messageMode: MessageMode = MessageMode.Normal, onBackPressed: () -> Unit = {}, onHeaderTitleClick: ((Channel) -> Unit)? = null, + onHeaderTitleClickLabel: String? = null, onChannelAvatarClick: ((Channel) -> Unit)? = null, onChannelAvatarClickLabel: String? = null, leadingContent: @Composable RowScope.() -> Unit = { @@ -107,6 +109,7 @@ public fun ChannelHeader( typingUsers = typingUsers, messageMode = messageMode, onClick = onHeaderTitleClick, + onClickLabel = onHeaderTitleClickLabel, ), ) } @@ -155,6 +158,7 @@ internal fun DefaultChannelHeaderLeadingContent(onBackPressed: () -> Unit) { * @param modifier Modifier for styling. * @param messageMode Currently active message mode, used to define the title information. * @param onHeaderTitleClick Handler for when the user taps on the header title section. + * @param onHeaderTitleClickLabel Semantic / accessibility label for [onHeaderTitleClick]. */ @Suppress("LongMethod") @Composable @@ -165,6 +169,7 @@ internal fun DefaultChannelHeaderCenterContent( modifier: Modifier = Modifier, messageMode: MessageMode = MessageMode.Normal, onHeaderTitleClick: ((Channel) -> Unit)? = null, + onHeaderTitleClickLabel: String? = null, ) { val title = when (messageMode) { MessageMode.Normal -> ChatTheme.channelNameFormatter.formatChannelName(channel, currentUser) @@ -186,12 +191,11 @@ internal fun DefaultChannelHeaderCenterContent( Column( modifier = modifier .height(IntrinsicSize.Max) - .run { - if (onHeaderTitleClick != null) { - clickable { onHeaderTitleClick(channel) } - } else { - this - } + .ifNotNull(onHeaderTitleClick) { callback -> + clickable( + onClickLabel = onHeaderTitleClickLabel, + role = Role.Button, + ) { callback(channel) } }, horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt index 08d33cc51e1..7f222042062 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt @@ -633,6 +633,7 @@ public interface ChatComponentFactory { messageMode = params.messageMode, onBackPressed = params.onBackPressed, onHeaderTitleClick = params.onHeaderTitleClick, + onHeaderTitleClickLabel = params.onHeaderTitleClickLabel, onChannelAvatarClick = params.onChannelAvatarClick, onChannelAvatarClickLabel = params.onChannelAvatarClickLabel, ) @@ -664,6 +665,7 @@ public interface ChatComponentFactory { connectionState = params.connectionState, messageMode = params.messageMode, onHeaderTitleClick = params.onClick, + onHeaderTitleClickLabel = params.onClickLabel, ) } diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt index 71579d00e51..355e1587c85 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt @@ -394,6 +394,7 @@ public data class SearchResultItemTrailingContentParams( * @param messageMode The current message mode. * @param onBackPressed Action invoked when the back button is pressed. * @param onHeaderTitleClick Action invoked when the header title is clicked. + * @param onHeaderTitleClickLabel Semantic / accessibility label for [onHeaderTitleClick]. * @param onChannelAvatarClick Action invoked when the channel avatar is clicked. * @param onChannelAvatarClickLabel Semantic / accessibility label for [onChannelAvatarClick]. */ @@ -406,6 +407,7 @@ public data class ChannelHeaderParams( val messageMode: MessageMode = MessageMode.Normal, val onBackPressed: () -> Unit = {}, val onHeaderTitleClick: ((Channel) -> Unit)? = null, + val onHeaderTitleClickLabel: String? = null, val onChannelAvatarClick: ((Channel) -> Unit)? = null, val onChannelAvatarClickLabel: String? = null, ) @@ -429,6 +431,7 @@ public data class ChannelHeaderLeadingContentParams( * @param typingUsers The list of users currently typing. * @param messageMode The current message mode. * @param onClick Action invoked when the header is clicked. + * @param onClickLabel Semantic / accessibility label for [onClick]. */ public data class ChannelHeaderCenterContentParams( val channel: Channel, @@ -438,6 +441,7 @@ public data class ChannelHeaderCenterContentParams( val typingUsers: List = emptyList(), val messageMode: MessageMode = MessageMode.Normal, val onClick: ((Channel) -> Unit)? = null, + val onClickLabel: String? = null, ) /** From c8c8b78ac2e80cd8ddf2739750f495c6fd8c422b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Mion?= Date: Wed, 20 May 2026 09:53:51 +0100 Subject: [PATCH 4/6] Move sample MessagesActivity to ui/channel/ChannelActivity --- .../chat/android/compose/sample/ui/StartupActivity.kt | 3 ++- .../src/main/AndroidManifest.xml | 2 +- .../sample/feature/channel/add/AddChannelActivity.kt | 4 ++-- .../channel/add/group/AddGroupChannelActivity.kt | 4 ++-- .../feature/channel/draft/DraftChannelActivity.kt | 4 ++-- .../sample/feature/channel/list/ChannelsActivity.kt | 8 ++++---- .../feature/reminders/MessageRemindersActivity.kt | 4 ++-- .../ChannelActivity.kt} | 11 +++++------ .../sample/ui/channel/GroupChannelInfoActivity.kt | 3 +-- .../sample/ui/pinned/PinnedMessagesActivity.kt | 4 ++-- .../src/main/res/values/strings.xml | 4 ++-- 11 files changed, 25 insertions(+), 26 deletions(-) rename stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/{MessagesActivity.kt => channel/ChannelActivity.kt} (92%) diff --git a/stream-chat-android-compose-sample/src/demo/java/io/getstream/chat/android/compose/sample/ui/StartupActivity.kt b/stream-chat-android-compose-sample/src/demo/java/io/getstream/chat/android/compose/sample/ui/StartupActivity.kt index 4367f0caa76..33ea4e7df85 100644 --- a/stream-chat-android-compose-sample/src/demo/java/io/getstream/chat/android/compose/sample/ui/StartupActivity.kt +++ b/stream-chat-android-compose-sample/src/demo/java/io/getstream/chat/android/compose/sample/ui/StartupActivity.kt @@ -27,6 +27,7 @@ import io.getstream.chat.android.compose.sample.BuildConfig import io.getstream.chat.android.compose.sample.ChatApp import io.getstream.chat.android.compose.sample.data.customSettings import io.getstream.chat.android.compose.sample.feature.channel.list.ChannelsActivity +import io.getstream.chat.android.compose.sample.ui.channel.ChannelActivity import io.getstream.chat.android.compose.sample.ui.chats.ChatsActivity import io.getstream.chat.android.compose.sample.ui.login.UserLoginActivity import io.getstream.chat.android.models.InitializationState @@ -74,7 +75,7 @@ class StartupActivity : AppCompatActivity() { TaskStackBuilder.create(applicationContext) .addNextIntent(ChannelsActivity.createIntent(applicationContext)) .addNextIntent( - MessagesActivity.createIntent( + ChannelActivity.createIntent( context = applicationContext, channelId = channelId, messageId = messageId, diff --git a/stream-chat-android-compose-sample/src/main/AndroidManifest.xml b/stream-chat-android-compose-sample/src/main/AndroidManifest.xml index 59b1a5ea290..7b986641e90 100644 --- a/stream-chat-android-compose-sample/src/main/AndroidManifest.xml +++ b/stream-chat-android-compose-sample/src/main/AndroidManifest.xml @@ -81,7 +81,7 @@ android:exported="false" /> diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/add/AddChannelActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/add/AddChannelActivity.kt index bfd4974af8b..38a93c33303 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/add/AddChannelActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/add/AddChannelActivity.kt @@ -27,7 +27,7 @@ import androidx.compose.runtime.LaunchedEffect import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.getstream.chat.android.compose.sample.R import io.getstream.chat.android.compose.sample.feature.channel.add.group.AddGroupChannelActivity -import io.getstream.chat.android.compose.sample.ui.MessagesActivity +import io.getstream.chat.android.compose.sample.ui.channel.ChannelActivity import io.getstream.chat.android.compose.ui.theme.ChatComponentFactory import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.compose.ui.theme.MessageComposerLeadingContentParams @@ -82,7 +82,7 @@ class AddChannelActivity : ComponentActivity() { } private fun openChannel(cid: String) { - val intent = MessagesActivity.createIntent(this, cid) + val intent = ChannelActivity.createIntent(this, cid) startActivity(intent) finish() } diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/add/group/AddGroupChannelActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/add/group/AddGroupChannelActivity.kt index 46552f46332..3e36ecb74d4 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/add/group/AddGroupChannelActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/add/group/AddGroupChannelActivity.kt @@ -24,7 +24,7 @@ import androidx.activity.viewModels import androidx.compose.runtime.LaunchedEffect import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.getstream.chat.android.compose.sample.R -import io.getstream.chat.android.compose.sample.ui.MessagesActivity +import io.getstream.chat.android.compose.sample.ui.channel.ChannelActivity import io.getstream.chat.android.compose.ui.theme.ChatTheme import kotlinx.coroutines.flow.collectLatest @@ -76,7 +76,7 @@ class AddGroupChannelActivity : ComponentActivity() { } private fun openChannel(cid: String) { - val intent = MessagesActivity.createIntent(this, cid) + val intent = ChannelActivity.createIntent(this, cid) startActivity(intent) finish() } diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/draft/DraftChannelActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/draft/DraftChannelActivity.kt index f2fb5b8bb18..7f080e6e3f7 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/draft/DraftChannelActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/draft/DraftChannelActivity.kt @@ -27,7 +27,7 @@ import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import io.getstream.chat.android.compose.sample.R -import io.getstream.chat.android.compose.sample.ui.MessagesActivity +import io.getstream.chat.android.compose.sample.ui.channel.ChannelActivity import io.getstream.chat.android.compose.ui.theme.ChatTheme import kotlinx.coroutines.flow.collectLatest @@ -68,7 +68,7 @@ class DraftChannelActivity : ComponentActivity() { when (event) { is DraftChannelViewEvent.NavigateToChannel -> { startActivity( - MessagesActivity.createIntent( + ChannelActivity.createIntent( context = applicationContext, channelId = event.cid, ), diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/list/ChannelsActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/list/ChannelsActivity.kt index 44475d2c963..a074891365d 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/list/ChannelsActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/list/ChannelsActivity.kt @@ -66,8 +66,8 @@ import io.getstream.chat.android.compose.sample.feature.channel.add.AddChannelAc import io.getstream.chat.android.compose.sample.feature.channel.add.group.AddGroupChannelActivity import io.getstream.chat.android.compose.sample.feature.channel.isGroupChannel import io.getstream.chat.android.compose.sample.feature.reminders.MessageRemindersActivity -import io.getstream.chat.android.compose.sample.ui.MessagesActivity import io.getstream.chat.android.compose.sample.ui.SampleChatTheme +import io.getstream.chat.android.compose.sample.ui.channel.ChannelActivity import io.getstream.chat.android.compose.sample.ui.channel.DirectChannelInfoActivity import io.getstream.chat.android.compose.sample.ui.channel.GroupChannelInfoActivity import io.getstream.chat.android.compose.sample.ui.component.AppBottomBar @@ -359,7 +359,7 @@ class ChannelsActivity : ComponentActivity() { private fun openMessages(channel: Channel) { startActivity( - MessagesActivity.createIntent( + ChannelActivity.createIntent( context = this, channelId = channel.cid, messageId = null, @@ -370,7 +370,7 @@ class ChannelsActivity : ComponentActivity() { private fun openMessages(message: Message) { startActivity( - MessagesActivity.createIntent( + ChannelActivity.createIntent( context = this, channelId = message.cid, messageId = message.id, @@ -381,7 +381,7 @@ class ChannelsActivity : ComponentActivity() { private fun openThread(thread: Thread) { startActivity( - MessagesActivity.createIntent( + ChannelActivity.createIntent( context = this, channelId = thread.parentMessage.cid, parentMessageId = thread.parentMessageId, diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/reminders/MessageRemindersActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/reminders/MessageRemindersActivity.kt index 553293d765e..8dfe52286be 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/reminders/MessageRemindersActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/reminders/MessageRemindersActivity.kt @@ -21,7 +21,7 @@ import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.ui.Modifier -import io.getstream.chat.android.compose.sample.ui.MessagesActivity +import io.getstream.chat.android.compose.sample.ui.channel.ChannelActivity import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.models.Message @@ -47,7 +47,7 @@ class MessageRemindersActivity : ComponentActivity() { private fun openMessages(message: Message) { startActivity( - MessagesActivity.createIntent( + ChannelActivity.createIntent( context = this, channelId = message.cid, messageId = message.id, diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/MessagesActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/channel/ChannelActivity.kt similarity index 92% rename from stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/MessagesActivity.kt rename to stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/channel/ChannelActivity.kt index 1b1188ad560..793594c8606 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/MessagesActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/channel/ChannelActivity.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.getstream.chat.android.compose.sample.ui +package io.getstream.chat.android.compose.sample.ui.channel import android.content.Context import android.content.Intent @@ -27,8 +27,7 @@ import androidx.compose.ui.res.stringResource import io.getstream.chat.android.compose.sample.R import io.getstream.chat.android.compose.sample.data.customSettings import io.getstream.chat.android.compose.sample.feature.channel.isGroupChannel -import io.getstream.chat.android.compose.sample.ui.channel.DirectChannelInfoActivity -import io.getstream.chat.android.compose.sample.ui.channel.GroupChannelInfoActivity +import io.getstream.chat.android.compose.sample.ui.SampleChatTheme import io.getstream.chat.android.compose.ui.messages.ChannelScreen import io.getstream.chat.android.compose.ui.theme.AttachmentPickerConfig import io.getstream.chat.android.compose.ui.theme.ChatUiConfig @@ -37,7 +36,7 @@ import io.getstream.chat.android.compose.viewmodel.messages.ChannelViewModelFact import io.getstream.chat.android.compose.viewmodel.messages.ComposerOptions import io.getstream.chat.android.models.Channel -class MessagesActivity : ComponentActivity() { +class ChannelActivity : ComponentActivity() { private val settings by lazy { customSettings() } @@ -92,7 +91,7 @@ class MessagesActivity : ComponentActivity() { viewModelFactory = factory, onBackPressed = { finish() }, onChannelAvatarClick = ::openChannelInfo, - onChannelAvatarClickLabel = stringResource(R.string.messages_open_channel_info), + onChannelAvatarClickLabel = stringResource(R.string.channel_open_info), ) } @@ -116,7 +115,7 @@ class MessagesActivity : ComponentActivity() { messageId: String? = null, parentMessageId: String? = null, ): Intent { - return Intent(context, MessagesActivity::class.java).apply { + return Intent(context, ChannelActivity::class.java).apply { putExtra(KEY_CHANNEL_ID, channelId) putExtra(KEY_MESSAGE_ID, messageId) putExtra(KEY_PARENT_MESSAGE_ID, parentMessageId) diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/channel/GroupChannelInfoActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/channel/GroupChannelInfoActivity.kt index e3c95c098c7..fcf10fd14ab 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/channel/GroupChannelInfoActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/channel/GroupChannelInfoActivity.kt @@ -27,7 +27,6 @@ import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import io.getstream.chat.android.compose.sample.feature.channel.draft.DraftChannelActivity -import io.getstream.chat.android.compose.sample.ui.MessagesActivity import io.getstream.chat.android.compose.sample.ui.channel.attachments.ChannelFilesAttachmentsActivity import io.getstream.chat.android.compose.sample.ui.channel.attachments.ChannelMediaAttachmentsActivity import io.getstream.chat.android.compose.sample.ui.pinned.PinnedMessagesActivity @@ -111,7 +110,7 @@ class GroupChannelInfoActivity : ComponentActivity() { openFilesAttachments() is ChannelInfoViewEvent.NavigateToChannel -> - startActivity(MessagesActivity.createIntent(context = this, channelId = event.cid)) + startActivity(ChannelActivity.createIntent(context = this, channelId = event.cid)) is ChannelInfoViewEvent.NavigateToDraftChannel -> startActivity(DraftChannelActivity.createIntent(context = this, memberIds = listOf(event.memberId))) diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/pinned/PinnedMessagesActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/pinned/PinnedMessagesActivity.kt index b6707ab4f0b..04f64976719 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/pinned/PinnedMessagesActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/pinned/PinnedMessagesActivity.kt @@ -24,7 +24,7 @@ import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.ui.Modifier -import io.getstream.chat.android.compose.sample.ui.MessagesActivity +import io.getstream.chat.android.compose.sample.ui.channel.ChannelActivity import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.compose.viewmodel.pinned.PinnedMessageListViewModel import io.getstream.chat.android.compose.viewmodel.pinned.PinnedMessageListViewModelFactory @@ -71,7 +71,7 @@ class PinnedMessagesActivity : ComponentActivity() { } private fun openMessage(message: Message) { - val intent = MessagesActivity.createIntent( + val intent = ChannelActivity.createIntent( context = applicationContext, channelId = message.cid, messageId = message.id, diff --git a/stream-chat-android-compose-sample/src/main/res/values/strings.xml b/stream-chat-android-compose-sample/src/main/res/values/strings.xml index 0e1195eed2b..6ff49a951e7 100644 --- a/stream-chat-android-compose-sample/src/main/res/values/strings.xml +++ b/stream-chat-android-compose-sample/src/main/res/values/strings.xml @@ -127,7 +127,7 @@ Failed to load more media attachments Failed to load more files attachments - - Open channel info + + Open channel info From eb7f905a22e2a07cd8147eaccb3042a1bb018a3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Mion?= Date: Wed, 20 May 2026 13:57:38 +0100 Subject: [PATCH 5/6] Add snapshot tests for ChannelHeader previews Extract each preview body into an internal helper so the ChannelHeaderTest can drive snapshots from the same composables that back the @Preview annotations, mirroring the pattern used in ChannelMediaAttachmentsScreen. Moves the test next to its source under ui.messages.header, adds a thread-mode preview, and adds a few-members preview to keep member-count coverage that the old test had with channelWithFewMembers. Drops the user-typing preview/test: typing is rendered as a MessageListTypingIndicatorItemContent in the message list since PR #6206, so the header's typingUsers parameter no longer produces a visible change. --- .../ui/messages/header/ChannelHeader.kt | 145 ++++++++++++------ .../compose/ui/messages/ChannelHeaderTest.kt | 72 --------- .../ui/messages/header/ChannelHeaderTest.kt | 71 +++++++++ ...ges.header_ChannelHeaderTest_connected.png | Bin 0 -> 16274 bytes ...es.header_ChannelHeaderTest_connecting.png | Bin 0 -> 18276 bytes ....header_ChannelHeaderTest_few_members.png} | Bin ....header_ChannelHeaderTest_many_members.png | Bin 0 -> 21425 bytes ...sages.header_ChannelHeaderTest_offline.png | Bin 0 -> 16452 bytes ...s.header_ChannelHeaderTest_thread_mode.png | Bin 0 -> 17723 bytes ...ssages_ChannelHeaderTest_offline_state.png | Bin 20598 -> 0 bytes ...messages_ChannelHeaderTest_thread_mode.png | Bin 21200 -> 0 bytes 11 files changed, 168 insertions(+), 120 deletions(-) delete mode 100644 stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/ChannelHeaderTest.kt create mode 100644 stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderTest.kt create mode 100644 stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connected.png create mode 100644 stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connecting.png rename stream-chat-android-compose/src/test/snapshots/images/{io.getstream.chat.android.compose.ui.messages_ChannelHeaderTest_connected_state.png => io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_few_members.png} (100%) create mode 100644 stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_many_members.png create mode 100644 stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_offline.png create mode 100644 stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_thread_mode.png delete mode 100644 stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_ChannelHeaderTest_offline_state.png delete mode 100644 stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_ChannelHeaderTest_thread_mode.png diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt index 1fda242c1fc..9321942a3f3 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/header/ChannelHeader.kt @@ -52,6 +52,7 @@ import io.getstream.chat.android.models.Channel import io.getstream.chat.android.models.ConnectionState import io.getstream.chat.android.models.User import io.getstream.chat.android.previewdata.PreviewChannelData +import io.getstream.chat.android.previewdata.PreviewMessageData import io.getstream.chat.android.previewdata.PreviewUserData import io.getstream.chat.android.ui.common.state.messages.MessageMode @@ -290,78 +291,126 @@ internal fun DefaultChannelHeaderTrailingContent( ) } -@Preview(name = "ChannelHeader Preview (Connected)") +@Preview @Composable private fun ChannelHeaderConnectedPreview() { ChatTheme { - ChannelHeader( - modifier = Modifier - .fillMaxWidth() - .wrapContentHeight(), - channel = PreviewChannelData.channelWithImage, - currentUser = PreviewUserData.user1, - connectionState = ConnectionState.Connected, - ) + ChannelHeaderConnected() } } -@Preview(name = "ChannelHeader Preview (Connecting)") +@Composable +internal fun ChannelHeaderConnected() { + ChannelHeader( + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight(), + channel = PreviewChannelData.channelWithImage, + currentUser = PreviewUserData.user1, + connectionState = ConnectionState.Connected, + ) +} + +@Preview @Composable private fun ChannelHeaderConnectingPreview() { ChatTheme { - ChannelHeader( - modifier = Modifier - .fillMaxWidth() - .wrapContentHeight(), - channel = PreviewChannelData.channelWithImage, - currentUser = PreviewUserData.user1, - connectionState = ConnectionState.Connecting, - ) + ChannelHeaderConnecting() } } -@Preview(name = "ChannelHeader Preview (Offline)") +@Composable +internal fun ChannelHeaderConnecting() { + ChannelHeader( + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight(), + channel = PreviewChannelData.channelWithImage, + currentUser = PreviewUserData.user1, + connectionState = ConnectionState.Connecting, + ) +} + +@Preview @Composable private fun ChannelHeaderOfflinePreview() { ChatTheme { - ChannelHeader( - modifier = Modifier - .fillMaxWidth() - .wrapContentHeight(), - channel = PreviewChannelData.channelWithImage, - currentUser = PreviewUserData.user1, - connectionState = ConnectionState.Offline, - ) + ChannelHeaderOffline() } } -@Preview(name = "ChannelHeader Preview (User Typing)") @Composable -private fun ChannelHeaderUserTypingPreview() { +internal fun ChannelHeaderOffline() { + ChannelHeader( + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight(), + channel = PreviewChannelData.channelWithImage, + currentUser = PreviewUserData.user1, + connectionState = ConnectionState.Offline, + ) +} + +@Preview +@Composable +private fun ChannelHeaderManyMembersPreview() { ChatTheme { - ChannelHeader( - modifier = Modifier - .fillMaxWidth() - .wrapContentHeight(), - channel = PreviewChannelData.channelWithImage, - currentUser = PreviewUserData.user1, - typingUsers = listOf(PreviewUserData.user2), - connectionState = ConnectionState.Connected, - ) + ChannelHeaderManyMembers() } } -@Preview(name = "ChannelHeader Preview (Many Members)") @Composable -private fun ChannelHeaderManyMembersPreview() { +internal fun ChannelHeaderManyMembers() { + ChannelHeader( + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight(), + channel = PreviewChannelData.channelWithManyMembers, + currentUser = PreviewUserData.user1, + connectionState = ConnectionState.Connected, + ) +} + +@Preview +@Composable +private fun ChannelHeaderFewMembersPreview() { ChatTheme { - ChannelHeader( - modifier = Modifier - .fillMaxWidth() - .wrapContentHeight(), - channel = PreviewChannelData.channelWithManyMembers, - currentUser = PreviewUserData.user1, - connectionState = ConnectionState.Connected, - ) + ChannelHeaderFewMembers() } } + +@Composable +internal fun ChannelHeaderFewMembers() { + ChannelHeader( + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight(), + channel = PreviewChannelData.channelWithFewMembers, + currentUser = PreviewUserData.user1, + connectionState = ConnectionState.Connected, + ) +} + +@Preview +@Composable +private fun ChannelHeaderThreadModePreview() { + ChatTheme { + ChannelHeaderThreadMode() + } +} + +@Composable +internal fun ChannelHeaderThreadMode() { + ChannelHeader( + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight(), + channel = PreviewChannelData.channelWithImage, + currentUser = PreviewUserData.user1, + connectionState = ConnectionState.Connected, + messageMode = MessageMode.MessageThread( + parentMessage = PreviewMessageData.message1, + threadState = null, + ), + ) +} diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/ChannelHeaderTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/ChannelHeaderTest.kt deleted file mode 100644 index 7a12a06c0f8..00000000000 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/ChannelHeaderTest.kt +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2014-2026 Stream.io Inc. All rights reserved. - * - * Licensed under the Stream License; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE - * - * 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. - */ - -package io.getstream.chat.android.compose.ui.messages - -import app.cash.paparazzi.DeviceConfig -import app.cash.paparazzi.Paparazzi -import io.getstream.chat.android.compose.ui.PaparazziComposeTest -import io.getstream.chat.android.compose.ui.messages.header.ChannelHeader -import io.getstream.chat.android.models.ConnectionState -import io.getstream.chat.android.previewdata.PreviewChannelData -import io.getstream.chat.android.previewdata.PreviewMessageData -import io.getstream.chat.android.previewdata.PreviewUserData -import io.getstream.chat.android.ui.common.state.messages.MessageMode -import org.junit.Rule -import org.junit.Test - -internal class ChannelHeaderTest : PaparazziComposeTest { - - @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) - - @Test - fun `connected state`() { - snapshotWithDarkMode { - ChannelHeader( - channel = PreviewChannelData.channelWithFewMembers, - currentUser = PreviewUserData.user1, - connectionState = ConnectionState.Connected, - ) - } - } - - @Test - fun `offline state`() { - snapshotWithDarkMode { - ChannelHeader( - channel = PreviewChannelData.channelWithFewMembers, - currentUser = PreviewUserData.user1, - connectionState = ConnectionState.Offline, - ) - } - } - - @Test - fun `thread mode`() { - snapshotWithDarkMode { - ChannelHeader( - channel = PreviewChannelData.channelWithFewMembers, - currentUser = PreviewUserData.user1, - connectionState = ConnectionState.Connected, - messageMode = MessageMode.MessageThread( - parentMessage = PreviewMessageData.message1, - threadState = null, - ), - ) - } - } -} diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderTest.kt new file mode 100644 index 00000000000..cdd8da00051 --- /dev/null +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderTest.kt @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2014-2026 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE + * + * 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. + */ + +package io.getstream.chat.android.compose.ui.messages.header + +import app.cash.paparazzi.DeviceConfig +import app.cash.paparazzi.Paparazzi +import io.getstream.chat.android.compose.ui.PaparazziComposeTest +import org.junit.Rule +import org.junit.Test + +internal class ChannelHeaderTest : PaparazziComposeTest { + + @get:Rule + override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + + @Test + fun connected() { + snapshotWithDarkMode { + ChannelHeaderConnected() + } + } + + @Test + fun connecting() { + snapshotWithDarkMode { + ChannelHeaderConnecting() + } + } + + @Test + fun offline() { + snapshotWithDarkMode { + ChannelHeaderOffline() + } + } + + @Test + fun `few members`() { + snapshotWithDarkMode { + ChannelHeaderFewMembers() + } + } + + @Test + fun `many members`() { + snapshotWithDarkMode { + ChannelHeaderManyMembers() + } + } + + @Test + fun `thread mode`() { + snapshotWithDarkMode { + ChannelHeaderThreadMode() + } + } +} diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connected.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connected.png new file mode 100644 index 0000000000000000000000000000000000000000..1392f32a35117fe32d3787059ce460000e34a79f GIT binary patch literal 16274 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 literal 0 HcmV?d00001 diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connecting.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connecting.png new file mode 100644 index 0000000000000000000000000000000000000000..6254e2804928e40fbe32a309157dc24210f7c5bb GIT binary patch literal 18276 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 F{~MvtzkvV% literal 0 HcmV?d00001 diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_ChannelHeaderTest_connected_state.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_few_members.png similarity index 100% rename from stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_ChannelHeaderTest_connected_state.png rename to stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_few_members.png diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_many_members.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_many_members.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5c12dfde504fd22065867264513470ed56ee70 GIT binary patch literal 21425 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 literal 0 HcmV?d00001 diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_offline.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e4098bc32ab3e5166dfd778a1e1adae452dd53 GIT binary patch literal 16452 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 amEO0$z0QYd0rgxGS1#H8Sogz?pZ^Elv45=q literal 0 HcmV?d00001 diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_thread_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_thread_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..f222dcde3163f4b99eaebd5ee27b56733a77fcbe GIT binary patch literal 17723 zcmdVBd0dm%x;AWUtGiXC76qA0QBWx$^Gw>Nf+&N6fQ*q@WHK^^DbZR%W)ua&Sj!|L zq!J*Ei3(v5NMwv5glHIIm_i7dNJzfN?)TkicYpgk=X=k)f4_6iUp_8Y*1FgItaY#Z zzOL)Zyy$E%^QF?4d-m*+aX9yr>z+NI8t&P%_rqWI0WJM%M{4%$Is2)@Pd{9S&8}1T zmt5vj`R}(&7L(>5YP)}~>|y+zKd*E8TV7T#Kiyr4_UY;0 zj$C>zt)RV(Ek{=P6;W%~Hg-FkMd#;K+cQUtjlu}xYcpP9PJ8w=jpvKM+Or3|Z_kT@ zPxhP%{?p?@#lN-w`SD}_k9~pGe|Q8&xs`wd5C5hreK1qCi)k1v$2p7QcHAu^E0GiL zPl$>nQs-Js)Wu|4psKXoQps@7i)~}kGjxr6mJJZ z-?t(W#=*C`oNa}RQ{9QI(UuWCN^+HrfoP36;}fHcEly%oVBF#ARvR5bY@5g)_5eKJ zklK&FU&p`I(9T=KnFarj_7rd76|9>$l8|dI&R>klI@j7 zlt&Niu7dxW;A>`pt9-hypSEr5S|T8Y&>j0h+%dy9GfRnUclOCV<(sCDzO}UX^Y9L@ zHBJ?5uBFjZIZi9HZH*e>?ijo-I~P zZ$`y;9q)c-X6ZB!5nM7U1E{2pPR4|-Xw8iiAraA}l@$j?8{Mo>Og<&Li&>{@8vJ9q zb|Fssi=6WljznOAA1@P#S-pJ!WHEctjlV(FiAE27n|%b-*s*(izgo$z3O!83qr}wf zpn43)Z1{79s)qTtJJ;CIBJb-BSrqk@wdZ)zQ>ov}hvru|Aehp_g;v)qAxgj+#b<)) zgti^)`{v(50i)zGtjT&8Hul)pLMehr4$G#LBP2pHsxf}vp*(o5!L44sQt|o9Q}S0& zS=Ns(=ye{C|M2E<$8KP@Zc!R&8l$6bplc8u7`({Je_nvINq;+{kMre3sG3~AjE^e5 z5|~L(Q%8uQ6(|E~Cw{ypJ$+O&-`ce&3V6G^(Uj*wgOS@yH0i4Y`fGd}r2gO zItskp^#IuT;{~69LnkU0Nf1PZGvMY{z-jdn&7F0y6qOℑ}F4fTZ591ngb=i$f32 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 literal 0 HcmV?d00001 diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_ChannelHeaderTest_offline_state.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_ChannelHeaderTest_offline_state.png deleted file mode 100644 index c9446eb2225c9a285b3e650d55cb5c592bba37cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20598 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 Date: Wed, 20 May 2026 14:22:03 +0100 Subject: [PATCH 6/6] apiDump --- .../api/stream-chat-android-compose.api | 3 ++- 1 file changed, 2 insertions(+), 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 a3392d6f291..be6ab571f78 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -2106,10 +2106,11 @@ public final class io/getstream/chat/android/compose/ui/messages/header/Composab public static final field INSTANCE Lio/getstream/chat/android/compose/ui/messages/header/ComposableSingletons$ChannelHeaderKt; public fun ()V public final fun getLambda$-1151753628$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$-145224249$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$1045527387$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; public final fun getLambda$135791923$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; public final fun getLambda$1656639282$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; public final fun getLambda$2106788621$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; - public final fun getLambda$957576860$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } public final class io/getstream/chat/android/compose/ui/messages/list/ComposableSingletons$MessageItemKt {