From c87715c0e618971c01667d68ee5f3281459d8d58 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Mon, 3 Feb 2025 17:36:05 +0100 Subject: [PATCH 01/15] Introduce factory for menu items channel menu, message menu and reactions menu. --- .../compose/sample/ui/MessagesActivity.kt | 2 + .../component/CustomChatComponentFactory.kt | 9 + .../compose/ui/channels/ChannelsScreen.kt | 3 +- .../ui/channels/info/SelectedChannelMenu.kt | 36 +- .../ui/components/channels/ChannelOptions.kt | 22 +- .../components/channels/ChannelOptionsItem.kt | 106 --- .../common/GenericMenuOptionItem.kt | 68 ++ .../messageoptions/MessageOptionItem.kt | 34 +- .../messageoptions/MessageOptions.kt | 35 +- .../ExtendedReactionsOptions.kt | 38 +- .../reactionoptions/ReactionOptions.kt | 59 +- .../reactionpicker/ReactionsPicker.kt | 54 +- .../selectedmessage/SelectedMessageMenu.kt | 90 +-- .../selectedmessage/SelectedReactionsMenu.kt | 88 +-- .../compose/ui/messages/MessagesScreen.kt | 12 +- .../compose/ui/theme/ChatComponentFactory.kt | 644 ++++++++++++++++++ 16 files changed, 843 insertions(+), 457 deletions(-) delete mode 100644 stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptionsItem.kt create mode 100644 stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt 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 17842d3b40d..b7310b4afaf 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 @@ -62,6 +62,7 @@ import io.getstream.chat.android.compose.sample.ChatApp import io.getstream.chat.android.compose.sample.R import io.getstream.chat.android.compose.sample.ui.channel.ChannelInfoActivity import io.getstream.chat.android.compose.sample.ui.channel.GroupChannelInfoActivity +import io.getstream.chat.android.compose.sample.ui.component.CustomChatComponentFactory import io.getstream.chat.android.compose.state.mediagallerypreview.MediaGalleryPreviewResultType import io.getstream.chat.android.compose.ui.components.composer.MessageInput import io.getstream.chat.android.compose.ui.components.messageoptions.MessageOptionItemVisibility @@ -150,6 +151,7 @@ class MessagesActivity : BaseConnectedActivity() { autoTranslationEnabled = ChatApp.autoTranslationEnabled, isComposerLinkPreviewEnabled = ChatApp.isComposerLinkPreviewEnabled, allowUIAutomationTest = true, + componentFactory = CustomChatComponentFactory(), messageComposerTheme = messageComposerTheme.let { it.copy( attachmentCancelIcon = it.attachmentCancelIcon.copy( diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/component/CustomChatComponentFactory.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/component/CustomChatComponentFactory.kt index af68d4bc72a..e9e253d2ddb 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/component/CustomChatComponentFactory.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/component/CustomChatComponentFactory.kt @@ -17,9 +17,18 @@ package io.getstream.chat.android.compose.sample.ui.component import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp import io.getstream.chat.android.client.extensions.isPinned import io.getstream.chat.android.compose.state.channels.list.ItemState import io.getstream.chat.android.compose.ui.channels.list.ChannelItem diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/ChannelsScreen.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/ChannelsScreen.kt index 1ab94bb26b0..6421cbdd496 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/ChannelsScreen.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/ChannelsScreen.kt @@ -48,7 +48,6 @@ import androidx.lifecycle.viewmodel.compose.viewModel import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.channels.list.SearchQuery import io.getstream.chat.android.compose.ui.channels.header.ChannelListHeader -import io.getstream.chat.android.compose.ui.channels.info.SelectedChannelMenu import io.getstream.chat.android.compose.ui.channels.list.ChannelList import io.getstream.chat.android.compose.ui.components.SearchInput import io.getstream.chat.android.compose.ui.components.SimpleDialog @@ -189,7 +188,7 @@ public fun ChannelsScreen( enter = fadeIn(), exit = fadeOut(animationSpec = tween(durationMillis = AnimationConstants.DefaultDurationMillis / 2)), ) { - SelectedChannelMenu( + ChatTheme.componentFactory.ChannelMenu( modifier = Modifier .align(Alignment.BottomCenter) .animateEnterExit( diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/info/SelectedChannelMenu.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/info/SelectedChannelMenu.kt index 0ef56b5a580..9b0a2c907a0 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/info/SelectedChannelMenu.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/info/SelectedChannelMenu.kt @@ -79,16 +79,22 @@ public fun SelectedChannelMenu( shape: Shape = ChatTheme.shapes.bottomSheet, overlayColor: Color = ChatTheme.colors.overlay, headerContent: @Composable ColumnScope.() -> Unit = { - DefaultSelectedChannelMenuHeaderContent( - selectedChannel = selectedChannel, - currentUser = currentUser, - ) + with(ChatTheme.componentFactory) { + ChannelMenuHeaderContent( + modifier = Modifier, + selectedChannel = selectedChannel, + currentUser = currentUser, + ) + } }, centerContent: @Composable ColumnScope.() -> Unit = { - DefaultSelectedChannelMenuCenterContent( - onChannelOptionClick = onChannelOptionClick, - channelOptions = channelOptions, - ) + with(ChatTheme.componentFactory) { + ChannelMenuCenterContent( + modifier = Modifier, + onChannelOptionClick = onChannelOptionClick, + channelOptions = channelOptions, + ) + } }, ) { SimpleMenu( @@ -141,20 +147,6 @@ internal fun DefaultSelectedChannelMenuHeaderContent( ChannelMembers(membersToDisplay) } -/** - * Represents the default content shown at the center of [SelectedChannelMenu] dialog. - * - * @param onChannelOptionClick Handler for when the user selects a channel option. - * @param channelOptions The list of options to show in the UI, according to user permissions. - */ -@Composable -internal fun DefaultSelectedChannelMenuCenterContent( - onChannelOptionClick: (ChannelAction) -> Unit, - channelOptions: List, -) { - ChannelOptions(channelOptions, onChannelOptionClick) -} - /** * Preview of [SelectedChannelMenu] styled as a centered modal dialog. * diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptions.kt index fcf0edba762..63d143446a3 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptions.kt @@ -81,21 +81,13 @@ public fun ChannelOptions( .background(color = ChatTheme.colors.borders), ) - ChannelOptionsItem( - title = option.title, - titleColor = option.titleColor, - leadingIcon = { - Icon( - modifier = Modifier - .size(56.dp) - .padding(16.dp), - painter = option.iconPainter, - tint = option.iconColor, - contentDescription = null, - ) - }, - onClick = { onChannelOptionClick(option.action) }, - ) + with(ChatTheme.componentFactory) { + ChannelOptionsItem( + modifier = Modifier, + option = option, + onClick = { onChannelOptionClick(option.action) }, + ) + } } } } diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptionsItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptionsItem.kt deleted file mode 100644 index ba931822ce2..00000000000 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptionsItem.kt +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2014-2022 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.components.channels - -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon -import androidx.compose.material3.Text -import androidx.compose.material3.ripple -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import io.getstream.chat.android.compose.R -import io.getstream.chat.android.compose.ui.theme.ChatTheme - -/** - * Default component for selected channel menu options. - * - * @param title The text title of the action. - * @param titleColor The color of the title. - * @param leadingIcon The composable that defines the leading icon for the action. - * @param onClick The action to perform once the user taps on any option. - * @param modifier Modifier for styling. - */ -@Composable -internal fun ChannelOptionsItem( - title: String, - titleColor: Color, - leadingIcon: @Composable () -> Unit, - onClick: () -> Unit, - modifier: Modifier = Modifier, -) { - Row( - modifier - .fillMaxWidth() - .height(56.dp) - .clickable( - onClick = onClick, - indication = ripple(), - interactionSource = remember { MutableInteractionSource() }, - ), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Start, - ) { - leadingIcon() - - Text( - text = title, - style = ChatTheme.typography.bodyBold, - color = titleColor, - ) - } -} - -/** - * Preview of [ChannelOptionsItem]. - * - * Should show a channel action item with an icon and a name. - */ -@Preview(showBackground = true, name = "ChannelOptionsItem Preview") -@Composable -private fun ChannelOptionsItemPreview() { - ChatTheme { - ChannelOptionsItem( - title = stringResource(id = R.string.stream_compose_selected_channel_menu_view_info), - titleColor = ChatTheme.colors.textHighEmphasis, - leadingIcon = { - Icon( - modifier = Modifier - .size(56.dp) - .padding(16.dp), - painter = painterResource(id = R.drawable.stream_compose_ic_person), - tint = ChatTheme.colors.textLowEmphasis, - contentDescription = null, - ) - }, - onClick = {}, - ) - } -} diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt new file mode 100644 index 00000000000..478c232417a --- /dev/null +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt @@ -0,0 +1,68 @@ +package io.getstream.chat.android.compose.ui.components.common + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.material3.Text +import androidx.compose.material3.ripple +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import io.getstream.chat.android.compose.ui.theme.ChatTheme + +/** + * Represents a generic menu option item that can be used in a list of options. + * + * @param modifier Modifier for styling. + * @param onClick Handler called when the item is clicked. + * @param leadingIcon The icon to show on the left side of the item. + * @param title The title of the item. + * @param titleColor The color of the title. + * @param style The style of the title. + * @param itemHeight The height of the item. + * @param verticalAlignment Used to apply vertical alignment. + * @param horizontalArrangement Used to apply horizontal arrangement. + */ +@Composable +public fun GenericMenuOptionItem( + modifier: Modifier = Modifier, + onClick: () -> Unit, + leadingIcon: @Composable RowScope.() -> Unit, + title: String, + titleColor: Color, + style: TextStyle = ChatTheme.typography.bodyBold, + itemHeight: Dp = 56.dp, + verticalAlignment: Alignment.Vertical = Alignment.CenterVertically, + horizontalArrangement: Arrangement.Horizontal = Arrangement.Start, +) { + Row( + modifier + .fillMaxWidth() + .height(itemHeight) + .clickable( + onClick = onClick, + indication = ripple(), + interactionSource = remember { MutableInteractionSource() }, + ), + verticalAlignment = verticalAlignment, + horizontalArrangement = horizontalArrangement, + ) { + leadingIcon() + Text( + modifier = Modifier.testTag("Stream_ContextMenu_$title"), + text = title, + style = style, + color = titleColor, + ) + } +} \ No newline at end of file diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt index 65acefb44f4..cef318ead78 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt @@ -32,6 +32,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.messageoptions.MessageOptionItemState +import io.getstream.chat.android.compose.ui.components.common.GenericMenuOptionItem import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.previewdata.PreviewMessageData import io.getstream.chat.android.ui.common.state.messages.Reply @@ -50,28 +51,27 @@ public fun MessageOptionItem( modifier: Modifier = Modifier, verticalAlignment: Alignment.Vertical = Alignment.CenterVertically, horizontalArrangement: Arrangement.Horizontal = Arrangement.Start, + onMessageOptionItemSelected: (MessageOptionItemState) -> Unit = {}, ) { val title = stringResource(id = option.title) - - Row( + GenericMenuOptionItem( modifier = modifier, + title = title, + titleColor = option.titleColor, + leadingIcon = { + Icon( + modifier = Modifier.padding(horizontal = 16.dp), + painter = option.iconPainter, + tint = option.iconColor, + contentDescription = title, + ) + }, + onClick = { onMessageOptionItemSelected(option) }, + style = ChatTheme.typography.body, + itemHeight = 56.dp, verticalAlignment = verticalAlignment, horizontalArrangement = horizontalArrangement, - ) { - Icon( - modifier = Modifier.padding(horizontal = 16.dp), - painter = option.iconPainter, - tint = option.iconColor, - contentDescription = title, - ) - - Text( - modifier = Modifier.testTag("Stream_ContextMenu_$title"), - text = title, - style = ChatTheme.typography.body, - color = option.titleColor, - ) - } + ) } /** diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptions.kt index ef5fff6fdd5..ccaf6eb3357 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptions.kt @@ -69,10 +69,13 @@ public fun MessageOptions( onMessageOptionSelected: (MessageOptionItemState) -> Unit, modifier: Modifier = Modifier, itemContent: @Composable ColumnScope.(MessageOptionItemState) -> Unit = { option -> - DefaultMessageOptionItem( - option = option, - onMessageOptionSelected = onMessageOptionSelected, - ) + with(ChatTheme.componentFactory) { + MessageMenuOptionsItem( + modifier = Modifier, + option = option, + onMessageOptionSelected = onMessageOptionSelected, + ) + } }, ) { Column(modifier = modifier) { @@ -84,30 +87,6 @@ public fun MessageOptions( } } -/** - * The default message option item. - * - * @param option The represented option. - * @param onMessageOptionSelected Handler when the user selects the option. - */ -@Composable -internal fun DefaultMessageOptionItem( - option: MessageOptionItemState, - onMessageOptionSelected: (MessageOptionItemState) -> Unit, -) { - MessageOptionItem( - modifier = Modifier - .fillMaxWidth() - .height(ChatTheme.dimens.messageOptionsItemHeight) - .clickable( - onClick = { onMessageOptionSelected(option) }, - interactionSource = remember { MutableInteractionSource() }, - indication = ripple(), - ), - option = option, - ) -} - /** * Builds the default message options we show to our users. A different set of options * is shown for pending and sent messages. diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptions.kt index dc1503522a2..e13e832a0e5 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptions.kt @@ -17,17 +17,13 @@ package io.getstream.chat.android.compose.ui.components.reactionoptions import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyGridScope import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items -import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.key -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -60,10 +56,13 @@ public fun ExtendedReactionsOptions( cells: GridCells = GridCells.Fixed(DefaultNumberOfColumns), reactionTypes: Map = ChatTheme.reactionIconFactory.createReactionIcons(), itemContent: @Composable LazyGridScope.(ReactionOptionItemState) -> Unit = { option -> - DefaultExtendedReactionsItemContent( - option = option, - onReactionOptionSelected = onReactionOptionSelected, - ) + with(ChatTheme.componentFactory) { + ExtendedReactionMenuOptionItem( + modifier = Modifier.padding(vertical = 8.dp), + onReactionOptionSelected = onReactionOptionSelected, + option = option + ) + } }, ) { val options = reactionTypes.entries.map { (type, reactionIcon) -> @@ -83,29 +82,6 @@ public fun ExtendedReactionsOptions( } } -/** - * The default item content inside [ExtendedReactionsOptions]. Shows an individual reaction. - * - * @param option Individual reaction option. - * @param onReactionOptionSelected Handler that propagates click events on each item. - */ -@Composable -internal fun DefaultExtendedReactionsItemContent( - option: ReactionOptionItemState, - onReactionOptionSelected: (ReactionOptionItemState) -> Unit, -) { - ReactionOptionItem( - modifier = Modifier - .padding(vertical = 8.dp) - .clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = ripple(bounded = false), - onClick = { onReactionOptionSelected(option) }, - ), - option = option, - ) -} - /** * Preview for [ExtendedReactionsOptions] with no reaction selected. */ diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt index 986e70f7981..3eb211dbca3 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt @@ -22,7 +22,6 @@ import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope -import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.ripple import androidx.compose.runtime.Composable @@ -32,7 +31,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.reactionoptions.ReactionOptionItemState import io.getstream.chat.android.compose.ui.theme.ChatTheme @@ -53,6 +51,7 @@ import io.getstream.chat.android.models.Reaction * @param showMoreReactionsIcon Drawable resource used for the show more button. * @param itemContent Composable that allows the user to customize the individual items shown in [ReactionOptions]. * By default shows individual reactions. + * @param showMore Composable that allows the user to customize the show more button. */ @Composable public fun ReactionOptions( @@ -65,10 +64,18 @@ public fun ReactionOptions( reactionTypes: Map = ChatTheme.reactionIconFactory.createReactionIcons(), @DrawableRes showMoreReactionsIcon: Int = R.drawable.stream_compose_ic_more, itemContent: @Composable RowScope.(ReactionOptionItemState) -> Unit = { option -> - DefaultReactionOptionItem( - option = option, - onReactionOptionSelected = onReactionOptionSelected, - ) + with(ChatTheme.componentFactory) { + ReactionMenuOptionItem( + modifier = Modifier, + option = option, + onReactionOptionSelected = onReactionOptionSelected, + ) + } + }, + showMore: @Composable RowScope.(onShowMoreReactionsSelected: () -> Unit, showMoreReactionsIcon: Int) -> Unit = { par1, par2 -> + with(ChatTheme.componentFactory) { + ReactionMenuShowMore(Modifier, par1, par2) + } }, ) { val options = reactionTypes.entries.map { (type, reactionIcon) -> @@ -91,44 +98,11 @@ public fun ReactionOptions( } if (options.size > numberOfReactionsShown) { - Icon( - modifier = Modifier.clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = ripple(bounded = false), - onClick = { onShowMoreReactionsSelected() }, - ), - painter = painterResource(id = showMoreReactionsIcon), - contentDescription = LocalContext.current.getString(R.string.stream_compose_show_more_reactions), - tint = ChatTheme.colors.textLowEmphasis, - ) + showMore(onShowMoreReactionsSelected, showMoreReactionsIcon) } } } -/** - * The default reaction option item. - * - * @param option The represented option. - * @param onReactionOptionSelected The handler when the option is selected. - */ -@Composable -internal fun DefaultReactionOptionItem( - option: ReactionOptionItemState, - onReactionOptionSelected: (ReactionOptionItemState) -> Unit, -) { - ReactionOptionItem( - modifier = Modifier - .size(24.dp) - .size(ChatTheme.dimens.reactionOptionItemIconSize) - .clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = ripple(bounded = false), - onClick = { onReactionOptionSelected(option) }, - ), - option = option, - ) -} - /** * Preview of [ReactionOptions] with a single item selected. */ @@ -136,10 +110,7 @@ internal fun DefaultReactionOptionItem( @Composable private fun ReactionOptionsPreview() { ChatTheme { - val reactionType = ChatTheme.reactionIconFactory - .createReactionIcons() - .keys - .firstOrNull() + val reactionType = ChatTheme.reactionIconFactory.createReactionIcons().keys.firstOrNull() if (reactionType != null) { ReactionOptions( diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPicker.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPicker.kt index ac7a95afd05..2f6bf5e09cc 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPicker.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPicker.kt @@ -66,14 +66,21 @@ public fun ReactionsPicker( cells: GridCells = GridCells.Fixed(DefaultNumberOfReactions), onDismiss: () -> Unit = {}, reactionTypes: Map = ChatTheme.reactionIconFactory.createReactionIcons(), - headerContent: @Composable ColumnScope.() -> Unit = {}, + headerContent: @Composable ColumnScope.() -> Unit = { + with(ChatTheme.componentFactory) { + MessageReactionPickerHeaderContent(Modifier, message, onMessageAction, onDismiss) + } + }, centerContent: @Composable ColumnScope.() -> Unit = { - DefaultReactionsPickerCenterContent( - message = message, - onMessageAction = onMessageAction, - cells = cells, - reactionTypes = reactionTypes, - ) + with(ChatTheme.componentFactory) { + MessageReactionPickerCenterContent( + modifier = Modifier, + message = message, + onMessageAction = onMessageAction, + onDismiss = onDismiss, + reactionTypes = reactionTypes, + ) + } }, ) { SimpleMenu( @@ -84,39 +91,8 @@ public fun ReactionsPicker( centerContent = centerContent, onDismiss = onDismiss, ) -} + } -/** - * The Default center content for the [ReactionsPicker]. Shows all available reactions. - * - * @param message The selected message. - * @param onMessageAction Handler that propagates click events on each item. - * @param cells Describes the way cells are formed inside [ExtendedReactionsOptions]. - * @param reactionTypes The available reactions. - */ -@OptIn(ExperimentalFoundationApi::class) -@Composable -internal fun DefaultReactionsPickerCenterContent( - message: Message, - onMessageAction: (MessageAction) -> Unit, - cells: GridCells = GridCells.Fixed(DefaultNumberOfReactions), - reactionTypes: Map = ChatTheme.reactionIconFactory.createReactionIcons(), -) { - ExtendedReactionsOptions( - modifier = Modifier.padding(start = 16.dp, end = 16.dp, top = 12.dp, bottom = 12.dp), - reactionTypes = reactionTypes, - ownReactions = message.ownReactions, - onReactionOptionSelected = { reactionOptionItemState -> - onMessageAction( - React( - reaction = Reaction(messageId = message.id, reactionOptionItemState.type), - message = message, - ), - ) - }, - cells = cells, - ) -} /** * Preview of [ReactionsPicker] with a reaction selected. diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedMessageMenu.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedMessageMenu.kt index dc2d9dba29b..b00500fa832 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedMessageMenu.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedMessageMenu.kt @@ -18,18 +18,14 @@ package io.getstream.chat.android.compose.ui.components.selectedmessage import androidx.annotation.DrawableRes import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.messageoptions.MessageOptionItemState import io.getstream.chat.android.compose.ui.components.SimpleMenu -import io.getstream.chat.android.compose.ui.components.messageoptions.MessageOptions import io.getstream.chat.android.compose.ui.components.messageoptions.defaultMessageOptionsState import io.getstream.chat.android.compose.ui.components.reactionoptions.ReactionOptions import io.getstream.chat.android.compose.ui.theme.ChatTheme @@ -37,10 +33,8 @@ import io.getstream.chat.android.compose.ui.util.ReactionIcon import io.getstream.chat.android.compose.util.extensions.toSet import io.getstream.chat.android.models.ChannelCapabilities import io.getstream.chat.android.models.Message -import io.getstream.chat.android.models.Reaction import io.getstream.chat.android.models.User import io.getstream.chat.android.ui.common.state.messages.MessageAction -import io.getstream.chat.android.ui.common.state.messages.React /** * Represents the options user can take after selecting a message. @@ -75,23 +69,24 @@ public fun SelectedMessageMenu( @DrawableRes showMoreReactionsIcon: Int = R.drawable.stream_compose_ic_more, onDismiss: () -> Unit = {}, headerContent: @Composable ColumnScope.() -> Unit = { - val canLeaveReaction = ownCapabilities.contains(ChannelCapabilities.SEND_REACTION) - - if (ChatTheme.reactionOptionsTheme.areReactionOptionsVisible && canLeaveReaction) { - DefaultSelectedMessageReactionOptions( - message = message, - reactionTypes = reactionTypes, - showMoreReactionsDrawableRes = showMoreReactionsIcon, - onMessageAction = onMessageAction, - showMoreReactionsIcon = onShowMoreReactionsSelected, - ) + with(ChatTheme.componentFactory) { + val canLeaveReaction = ownCapabilities.contains(ChannelCapabilities.SEND_REACTION) + if (ChatTheme.reactionOptionsTheme.areReactionOptionsVisible && canLeaveReaction) { + MessageMenuHeaderContent( + modifier = Modifier, + message = message, + messageOptions = messageOptions, + onMessageAction = onMessageAction, + ownCapabilities = ownCapabilities, + onShowMore = onShowMoreReactionsSelected, + ) + } } }, centerContent: @Composable ColumnScope.() -> Unit = { - DefaultSelectedMessageOptions( - messageOptions = messageOptions, - onMessageAction = onMessageAction, - ) + with(ChatTheme.componentFactory) { + MessageMenuOptions(Modifier, message, messageOptions, { onMessageAction(it.action) }) + } }, ) { SimpleMenu( @@ -104,61 +99,6 @@ public fun SelectedMessageMenu( ) } -/** - * Default reaction options for the selected message. - * - * @param message The selected message. - * @param reactionTypes Available reactions. - * @param showMoreReactionsDrawableRes Drawable resource used for the show more button. - * @param onMessageAction Handler when the user selects a reaction. - * @param showMoreReactionsIcon Handler that propagates clicks on the show more button. - */ -@Composable -internal fun DefaultSelectedMessageReactionOptions( - message: Message, - reactionTypes: Map, - @DrawableRes showMoreReactionsDrawableRes: Int = R.drawable.stream_compose_ic_more, - onMessageAction: (MessageAction) -> Unit, - showMoreReactionsIcon: () -> Unit, -) { - ReactionOptions( - modifier = Modifier - .fillMaxWidth() - .padding(start = 16.dp, end = 16.dp, bottom = 8.dp, top = 20.dp), - reactionTypes = reactionTypes, - showMoreReactionsIcon = showMoreReactionsDrawableRes, - onReactionOptionSelected = { - onMessageAction( - React( - reaction = Reaction(messageId = message.id, type = it.type), - message = message, - ), - ) - }, - onShowMoreReactionsSelected = showMoreReactionsIcon, - ownReactions = message.ownReactions, - ) -} - -/** - * Default selected message options. - * - * @param messageOptions The available options. - * @param onMessageAction Handler when the user selects an option. - */ -@Composable -internal fun DefaultSelectedMessageOptions( - messageOptions: List, - onMessageAction: (MessageAction) -> Unit, -) { - MessageOptions( - options = messageOptions, - onMessageOptionSelected = { - onMessageAction(it.action) - }, - ) -} - /** * Preview of [SelectedMessageMenu]. */ diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt index 8ab69faf83e..3a195e99042 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt @@ -80,20 +80,27 @@ public fun SelectedReactionsMenu( val canLeaveReaction = ownCapabilities.contains(ChannelCapabilities.SEND_REACTION) if (canLeaveReaction) { - DefaultSelectedReactionsHeaderContent( - message = message, - reactionTypes = reactionTypes, - showMoreReactionsIcon = showMoreReactionsIcon, - onMessageAction = onMessageAction, - onShowMoreReactionsSelected = onShowMoreReactionsSelected, - ) + with(ChatTheme.componentFactory) { + ReactionsMenuHeaderContent( + modifier = Modifier, + message = message, + reactionTypes = reactionTypes, + onMessageAction = onMessageAction, + onShowMoreReactionsSelected = onShowMoreReactionsSelected, + ) + } } }, centerContent: @Composable ColumnScope.() -> Unit = { - DefaultSelectedReactionsCenterContent( - message = message, - currentUser = currentUser, - ) + with(ChatTheme.componentFactory) { + ReactionsMenuCenterContent( + modifier = Modifier, + userReactions = buildUserReactionItems( + message = message, + currentUser = currentUser, + ) + ) + } }, ) { SimpleMenu( @@ -106,65 +113,6 @@ public fun SelectedReactionsMenu( ) } -/** - * Default header content for the selected reactions menu. - * - * @param message The selected message. - * @param reactionTypes Available reactions. - * @param showMoreReactionsIcon Drawable resource used for the show more button. - * @param onMessageAction Handler when the user selects a reaction. - * @param onShowMoreReactionsSelected Handler that propagates clicks on the show more button. - */ -@Composable -internal fun DefaultSelectedReactionsHeaderContent( - message: Message, - reactionTypes: Map, - @DrawableRes showMoreReactionsIcon: Int = R.drawable.stream_compose_ic_more, - onMessageAction: (MessageAction) -> Unit, - onShowMoreReactionsSelected: () -> Unit, -) { - ReactionOptions( - modifier = Modifier - .fillMaxWidth() - .padding(start = 16.dp, end = 16.dp, bottom = 8.dp, top = 20.dp), - reactionTypes = reactionTypes, - showMoreReactionsIcon = showMoreReactionsIcon, - onReactionOptionSelected = { - onMessageAction( - React( - reaction = Reaction(messageId = message.id, type = it.type), - message = message, - ), - ) - }, - onShowMoreReactionsSelected = onShowMoreReactionsSelected, - ownReactions = message.ownReactions, - ) -} - -/** - * Default center content for the selected reactions menu. - * - * @param message The selected message. - * @param currentUser The currently logged in user. - */ -@Composable -internal fun DefaultSelectedReactionsCenterContent( - message: Message, - currentUser: User?, -) { - UserReactions( - modifier = Modifier - .fillMaxWidth() - .heightIn(max = ChatTheme.dimens.userReactionsMaxHeight) - .padding(vertical = 16.dp), - items = buildUserReactionItems( - message = message, - currentUser = currentUser, - ), - ) -} - /** * Builds a list of user reactions, based on the current user and the selected message. * diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/MessagesScreen.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/MessagesScreen.kt index 244f0468660..e224fa83537 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/MessagesScreen.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/MessagesScreen.kt @@ -68,13 +68,9 @@ import io.getstream.chat.android.compose.ui.components.moderatedmessage.Moderate import io.getstream.chat.android.compose.ui.components.poll.PollAnswersDialog import io.getstream.chat.android.compose.ui.components.poll.PollMoreOptionsDialog import io.getstream.chat.android.compose.ui.components.poll.PollViewResultDialog -import io.getstream.chat.android.compose.ui.components.reactionpicker.ReactionsPicker -import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedMessageMenu -import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedReactionsMenu import io.getstream.chat.android.compose.ui.messages.attachments.AttachmentsPicker import io.getstream.chat.android.compose.ui.messages.attachments.factory.AttachmentPickerPollCreation import io.getstream.chat.android.compose.ui.messages.composer.MessageComposer -import io.getstream.chat.android.compose.ui.messages.header.MessageListHeader import io.getstream.chat.android.compose.ui.messages.list.MessageList import io.getstream.chat.android.compose.ui.messages.list.ThreadMessagesStart import io.getstream.chat.android.compose.ui.theme.ChatTheme @@ -481,7 +477,7 @@ private fun BoxScope.MessagesScreenMenus( enter = fadeIn(), exit = fadeOut(animationSpec = tween(durationMillis = AnimationConstants.DefaultDurationMillis / 2)), ) { - SelectedMessageMenu( + ChatTheme.componentFactory.MessageMenu( modifier = Modifier .align(Alignment.BottomCenter) .animateEnterExit( @@ -511,7 +507,7 @@ private fun BoxScope.MessagesScreenMenus( } } }, - onShowMoreReactionsSelected = remember(listViewModel) { + onShowMore = remember(listViewModel) { { listViewModel.selectExtendedReactions(selectedMessage) } @@ -525,7 +521,7 @@ private fun BoxScope.MessagesScreenMenus( enter = fadeIn(), exit = fadeOut(animationSpec = tween(durationMillis = AnimationConstants.DefaultDurationMillis / 2)), ) { - SelectedReactionsMenu( + ChatTheme.componentFactory.ReactionsMenu( modifier = Modifier .align(Alignment.BottomCenter) .animateEnterExit( @@ -594,7 +590,7 @@ private fun BoxScope.MessagesScreenReactionsPicker( enter = fadeIn(), exit = fadeOut(animationSpec = tween(durationMillis = AnimationConstants.DefaultDurationMillis / 2)), ) { - ReactionsPicker( + ChatTheme.componentFactory.MessageReactionPicker( modifier = Modifier .align(Alignment.BottomCenter) .heightIn(max = 400.dp) 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 b56eba6abab..40d87d52e85 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 @@ -16,19 +16,53 @@ package io.getstream.chat.android.compose.ui.theme +import androidx.annotation.DrawableRes +import androidx.compose.animation.core.AnimationConstants +import androidx.compose.animation.core.tween +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyItemScope +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyGridScope +import androidx.compose.material3.Icon +import androidx.compose.material3.ripple import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import io.getstream.chat.android.compose.R +import io.getstream.chat.android.compose.state.channels.list.ChannelOptionState import io.getstream.chat.android.compose.state.channels.list.ItemState import io.getstream.chat.android.compose.state.mediagallerypreview.MediaGalleryPreviewResult +import io.getstream.chat.android.compose.state.messageoptions.MessageOptionItemState +import io.getstream.chat.android.compose.state.reactionoptions.ReactionOptionItemState +import io.getstream.chat.android.compose.state.userreactions.UserReactionItemState import io.getstream.chat.android.compose.ui.channels.header.DefaultChannelHeaderLeadingContent import io.getstream.chat.android.compose.ui.channels.header.DefaultChannelListHeaderCenterContent import io.getstream.chat.android.compose.ui.channels.header.DefaultChannelListHeaderTrailingContent +import io.getstream.chat.android.compose.ui.channels.info.DefaultSelectedChannelMenuHeaderContent +import io.getstream.chat.android.compose.ui.channels.info.SelectedChannelMenu import io.getstream.chat.android.compose.ui.channels.list.DefaultChannelItem import io.getstream.chat.android.compose.ui.channels.list.DefaultChannelItemCenterContent import io.getstream.chat.android.compose.ui.channels.list.DefaultChannelItemDivider @@ -42,7 +76,10 @@ import io.getstream.chat.android.compose.ui.channels.list.DefaultSearchResultIte import io.getstream.chat.android.compose.ui.components.DefaultSearchLabel import io.getstream.chat.android.compose.ui.components.DefaultSearchLeadingIcon import io.getstream.chat.android.compose.ui.components.NetworkLoadingIndicator +import io.getstream.chat.android.compose.ui.components.channels.ChannelOptions import io.getstream.chat.android.compose.ui.components.channels.MessageReadStatusIcon +import io.getstream.chat.android.compose.ui.components.common.GenericMenuOptionItem +import io.getstream.chat.android.compose.ui.components.messageoptions.MessageOptions import io.getstream.chat.android.compose.ui.components.messages.DefaultMessageContent import io.getstream.chat.android.compose.ui.components.messages.DefaultMessageDeletedContent import io.getstream.chat.android.compose.ui.components.messages.DefaultMessageGiphyContent @@ -53,6 +90,13 @@ import io.getstream.chat.android.compose.ui.components.messages.OwnedMessageVisi import io.getstream.chat.android.compose.ui.components.messages.QuotedMessage import io.getstream.chat.android.compose.ui.components.messages.UploadingFooter import io.getstream.chat.android.compose.ui.components.messages.factory.MessageContentFactory +import io.getstream.chat.android.compose.ui.components.reactionoptions.ExtendedReactionsOptions +import io.getstream.chat.android.compose.ui.components.reactionoptions.ReactionOptionItem +import io.getstream.chat.android.compose.ui.components.reactionoptions.ReactionOptions +import io.getstream.chat.android.compose.ui.components.reactionpicker.ReactionsPicker +import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedMessageMenu +import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedReactionsMenu +import io.getstream.chat.android.compose.ui.components.userreactions.UserReactions import io.getstream.chat.android.compose.ui.messages.header.DefaultMessageListHeaderCenterContent import io.getstream.chat.android.compose.ui.messages.header.DefaultMessageListHeaderLeadingContent import io.getstream.chat.android.compose.ui.messages.header.DefaultMessageListHeaderTrailingContent @@ -73,15 +117,20 @@ import io.getstream.chat.android.compose.ui.messages.list.DefaultMessagesHelperC import io.getstream.chat.android.compose.ui.messages.list.DefaultMessagesLoadingMoreIndicator import io.getstream.chat.android.compose.ui.messages.list.DefaultSystemMessageContent import io.getstream.chat.android.compose.ui.messages.list.MessagesLazyListState +import io.getstream.chat.android.compose.ui.util.ReactionIcon import io.getstream.chat.android.models.Channel import io.getstream.chat.android.models.ConnectionState import io.getstream.chat.android.models.Message import io.getstream.chat.android.models.Option import io.getstream.chat.android.models.Poll +import io.getstream.chat.android.models.Reaction import io.getstream.chat.android.models.ReactionSorting import io.getstream.chat.android.models.User import io.getstream.chat.android.models.Vote +import io.getstream.chat.android.ui.common.state.channels.actions.ChannelAction +import io.getstream.chat.android.ui.common.state.messages.MessageAction import io.getstream.chat.android.ui.common.state.messages.MessageMode +import io.getstream.chat.android.ui.common.state.messages.React import io.getstream.chat.android.ui.common.state.messages.list.DateSeparatorItemState import io.getstream.chat.android.ui.common.state.messages.list.EmptyThreadPlaceholderItemState import io.getstream.chat.android.ui.common.state.messages.list.GiphyAction @@ -896,4 +945,599 @@ public interface ChatComponentFactory { readCount = readCount, ) } + + // REGION: Channel menu + /** + * Factory method for creating the full content of the SelectedChannelMenu. + * + * @param modifier The modifier for the menu. + * @param selectedChannel The selected channel. + * @param isMuted Whether the channel is muted. + * @param currentUser The current user. + * @param onChannelOptionClick Callback for when a channel option is clicked. + * @param onDismiss Callback for when the menu is dismissed. + */ + @Composable + public fun ChannelMenu( + modifier: Modifier, + selectedChannel: Channel, + isMuted: Boolean, + currentUser: User?, + onChannelOptionClick: (ChannelAction) -> Unit, + onDismiss: () -> Unit, + ) { + SelectedChannelMenu( + modifier = modifier, + selectedChannel = selectedChannel, + isMuted = isMuted, + currentUser = currentUser, + onChannelOptionClick = onChannelOptionClick, + onDismiss = onDismiss, + ) + } + + /** + * Factory method for creating the header content of the SelectedChannelMenu. + * + * @param selectedChannel The selected channel. + * @param currentUser The current user. + */ + @Composable + public fun ChannelMenuHeaderContent( + modifier: Modifier, + selectedChannel: Channel, + currentUser: User?, + ) { + DefaultSelectedChannelMenuHeaderContent( + selectedChannel = selectedChannel, + currentUser = currentUser, + ) + } + + /** + * Factory method for creating the center content of the SelectedChannelMenu. + * + * @param onChannelOptionClick Callback for when a channel option is clicked. + * @param channelOptions List of channel options. + */ + @Composable + public fun ChannelMenuCenterContent( + modifier: Modifier, + onChannelOptionClick: (ChannelAction) -> Unit, + channelOptions: List, + ) { + ChannelMenuOptions( + channelOptions = channelOptions, + onChannelOptionClick = onChannelOptionClick, + modifier = modifier, + ) + } + + /** + * Factory method for creating the options content of the SelectedChannelMenu. + * + * @param onChannelOptionClick Callback for when a channel option is clicked. + * @param channelOptions List of channel options. + */ + @Composable + public fun ChannelMenuOptions( + modifier: Modifier, + onChannelOptionClick: (ChannelAction) -> Unit, + channelOptions: List, + ) { + ChannelOptions( + options = channelOptions, + onChannelOptionClick = onChannelOptionClick, + modifier = modifier, + ) + } + + /** + * Factory method for creating the footer content of the SelectedChannelMenu. + * + * @param modifier The modifier for the footer. + */ + @Composable + public fun ChannelOptionsItem( + modifier: Modifier, + option: ChannelOptionState, + onClick: () -> Unit, + ) { + MenuOptionItem( + modifier = modifier, + title = option.title, + titleColor = option.titleColor, + leadingIcon = { + ChannelOptionsItemLeadingIcon(Modifier, option) + }, + onClick = onClick, + style = ChatTheme.typography.bodyBold, + itemHeight = 56.dp, + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Start, + ) + } + + /** + * Factory method for creating the leading icon of the Channel options menu item. + * + * @param option The channel option state. + */ + @Composable + public fun ChannelOptionsItemLeadingIcon(modifier: Modifier, option: ChannelOptionState) { + Icon( + modifier = modifier + .size(56.dp) + .padding(16.dp), + painter = option.iconPainter, + tint = option.iconColor, + contentDescription = null, + ) + } + + // REGION: Message menu + /** + * Factory method for creating the full content of the SelectedMessageMenu. + * This is the menu that appears when a message is long-pressed. + * + * @param modifier The modifier for the menu. + * @param message The selected message. + * @param messageOptions List of message options. + * @param ownCapabilities The capabilities of the current user. + * @param onMessageAction Callback for when a message action is clicked. + * @param onDismiss Callback for when the menu is dismissed. + */ + @Composable + public fun MessageMenu( + modifier: Modifier, + message: Message, + messageOptions: List, + ownCapabilities: Set, + onMessageAction: (MessageAction) -> Unit, + onShowMore: () -> Unit, + onDismiss: () -> Unit, + ) { + SelectedMessageMenu( + modifier = modifier, + messageOptions = messageOptions, + message = message, + ownCapabilities = ownCapabilities, + onMessageAction = onMessageAction, + onShowMoreReactionsSelected = onShowMore, + onDismiss = onDismiss, + ) + } + + /** + * Factory method for creating the center content of the SelectedMessageMenu. + * + * @param modifier The modifier for the center content. + * @param message The selected message. + * @param messageOptions List of message options. + * @param ownCapabilities The capabilities of the current user. + */ + @Composable + public fun MessageMenuCenterContent( + modifier: Modifier, + message: Message, + messageOptions: List, + onMessageAction: (MessageAction) -> Unit, + ownCapabilities: Set, + ) { + MessageMenuOptions( + modifier = modifier, + message = message, + options = messageOptions, + onMessageOptionSelected = { onMessageAction(it.action) }, + ) + } + + /** + * Factory method for creating the header content of the SelectedMessageMenu. + * + * @param message The selected message. + * @param messageOptions List of message options. + * @param ownCapabilities The capabilities of the current user. + * @param onShowMore Callback for when the show more reactions option is clicked. + * @param onMessageAction Callback for when a message action is clicked. + */ + @Composable + public fun MessageMenuHeaderContent( + modifier: Modifier, + message: Message, + messageOptions: List, + onMessageAction: (MessageAction) -> Unit, + ownCapabilities: Set, + onShowMore: () -> Unit, + ) { + ReactionMenuOptions( + modifier = modifier, + message = message, + reactionTypes = ChatTheme.reactionIconFactory.createReactionIcons(), + onMessageAction = onMessageAction, + onShowMoreReactionsSelected = onShowMore, + ) + } + + /** + * Shows the default message options. + * + * @param modifier The modifier for the message options. + * @param options The list of message options. + */ + @Composable + public fun MessageMenuOptions( + modifier: Modifier, + message: Message, + options: List, + onMessageOptionSelected: (MessageOptionItemState) -> Unit, + ) { + MessageOptions( + modifier = modifier, + onMessageOptionSelected = onMessageOptionSelected, + options = options, + ) + } + + /** + * Factory method for creating the options content of the SelectedMessageMenu. + */ + @Composable + public fun MessageMenuOptionsItem( + modifier: Modifier, + option: MessageOptionItemState, + onMessageOptionSelected: (MessageOptionItemState) -> Unit, + ) { + val title = stringResource(id = option.title) + // Not using directly the [MessageOptionsItem] because that one contains our default behavior which is not overridable. + MenuOptionItem( + modifier = modifier, + title = title, + titleColor = option.titleColor, + leadingIcon = { + MessageMenuOptionsItemLeadingContent(modifier, option) + }, + onClick = { onMessageOptionSelected(option) }, + style = ChatTheme.typography.body, + itemHeight = 56.dp, + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Start, + ) + } + + /** + * Factory method for creating the leading icon of the Message options menu item. + * This is the icon that appears on the left side of the message option. + * + * @param option The message option state. + */ + @Composable + public fun MessageMenuOptionsItemLeadingContent( + modifier: Modifier, + option: MessageOptionItemState, + ) { + Icon( + modifier = modifier.padding(horizontal = 16.dp), + painter = option.iconPainter, + tint = option.iconColor, + contentDescription = null, + ) + } + + // REGION: Reaction menu and items + /** + * Factory method for creating the full content of the SelectedReactionsMenu. + * + * @param modifier The modifier for the menu. + * @param currentUser The current user. + * @param message The selected message. + * @param ownCapabilities The capabilities of the current user. + * @param onMessageAction Callback for when a message action is clicked. + * @param onDismiss Callback for when the menu is dismissed. + */ + @Composable + public fun ReactionsMenu( + modifier: Modifier, + currentUser: User?, + message: Message, + onMessageAction: (MessageAction) -> Unit, + onShowMoreReactionsSelected: () -> Unit, + ownCapabilities: Set, + onDismiss: () -> Unit, + ) { + SelectedReactionsMenu( + modifier = modifier, + currentUser = currentUser, + message = message, + onMessageAction = onMessageAction, + onShowMoreReactionsSelected = onShowMoreReactionsSelected, + onDismiss = onDismiss, + ownCapabilities = ownCapabilities, + ) + } + + /** + * Factory method for creating the header content of the SelectedReactionsMenu. + * + * @param message The selected message. + * @param reactionTypes The reaction types. + * @param onMessageAction Callback for when a message action is clicked. + * @param onShowMoreReactionsSelected Callback for when the show more reactions option is clicked. + */ + @Composable + public fun ReactionsMenuHeaderContent( + modifier: Modifier, + message: Message, + reactionTypes: Map, + onMessageAction: (MessageAction) -> Unit, + onShowMoreReactionsSelected: () -> Unit, + ) { + ReactionMenuOptions( + modifier = modifier, + message = message, + reactionTypes = reactionTypes, + onMessageAction = onMessageAction, + onShowMoreReactionsSelected = onShowMoreReactionsSelected, + ) + } + + /** + * Factory method for creating the center content of the reactions menu. + * + * @param modifier The modifier for the center content. + * @param userReactions The user reactions. + */ + @Composable + public fun ReactionsMenuCenterContent( + modifier: Modifier, + userReactions: List, + ) { + UserReactions( + modifier = Modifier + .fillMaxWidth() + .heightIn(max = ChatTheme.dimens.userReactionsMaxHeight) + .padding(vertical = 16.dp), + items = userReactions, + ) + } + + /** + * Factory method for the reaction options in the menu. + * + * @param message The selected message. + * @param reactionTypes The reaction types. + * @param onMessageAction Callback for when a message action is clicked. + * @param onShowMoreReactionsSelected Callback for when the show more reactions option is clicked. + */ + @Composable + public fun ReactionMenuOptions( + modifier: Modifier, + message: Message, + reactionTypes: Map, + onMessageAction: (MessageAction) -> Unit, + onShowMoreReactionsSelected: () -> Unit, + ) { + ReactionOptions( + modifier = modifier + .fillMaxWidth() + .padding(start = 16.dp, end = 16.dp, bottom = 8.dp, top = 20.dp), + reactionTypes = reactionTypes, + showMoreReactionsIcon = R.drawable.stream_compose_ic_more, + onReactionOptionSelected = { + onMessageAction( + React( + reaction = Reaction(messageId = message.id, type = it.type), + message = message, + ), + ) + }, + onShowMoreReactionsSelected = onShowMoreReactionsSelected, + ownReactions = message.ownReactions, + ) + } + + /** + * Factory method for creating the header content of the SelectedReactionsMenu. + * + * @param modifier The modifier for the header. + * @param option the reaction option. + * @param onReactionOptionSelected Callback for when a reaction option is clicked. + */ + @Composable + public fun ReactionMenuOptionItem( + modifier: Modifier, + option: ReactionOptionItemState, + onReactionOptionSelected: (ReactionOptionItemState) -> Unit, + ) { + ReactionOptionItem( + modifier = modifier + .size(24.dp) + .size(ChatTheme.dimens.reactionOptionItemIconSize) + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = ripple(bounded = false), + onClick = { onReactionOptionSelected(option) }, + ), + option = option, + ) + } + + /** + * Factory method for creating the reactions menu more option. + * + * @param onShowMoreReactionsSelected Callback for when the show more reactions option is clicked. + * @param showMoreReactionsIcon The icon for the show more reactions option. + */ + @Composable + public fun ReactionMenuShowMore( + modifier: Modifier, + onShowMoreReactionsSelected: () -> Unit, + showMoreReactionsIcon: Int, + ) { + Icon( + modifier = modifier.clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = ripple(bounded = false), + onClick = { onShowMoreReactionsSelected() }, + ), + painter = painterResource(id = showMoreReactionsIcon), + contentDescription = LocalContext.current.getString(R.string.stream_compose_show_more_reactions), + tint = ChatTheme.colors.textLowEmphasis, + ) + } + + /** + * Factory method for creating the center content of the reactions menu. + * + * @param modifier The modifier for the center content. + * @param message The selected message. + */ + @OptIn(ExperimentalFoundationApi::class) + @Composable + public fun ExtendedReactionsMenuOptions( + modifier: Modifier, + message: Message, + reactionTypes: Map, + onMessageAction: (MessageAction) -> Unit, + ) { + ExtendedReactionsOptions( + modifier = modifier + .fillMaxWidth() + .padding(start = 16.dp, end = 16.dp, bottom = 8.dp, top = 20.dp), + reactionTypes = reactionTypes, + onReactionOptionSelected = { + onMessageAction( + React( + reaction = Reaction(messageId = message.id, type = it.type), + message = message, + ), + ) + }, + cells = GridCells.Fixed(5), + ownReactions = message.ownReactions, + ) + } + + /** + * Factory method for creating the header content of the SelectedReactionsMenu. + * + * @param modifier The modifier for the header. + * @param option the reaction option. + * @param onReactionOptionSelected Callback for when a reaction option is clicked. + */ + @Composable + public fun ExtendedReactionMenuOptionItem( + modifier: Modifier, + option: ReactionOptionItemState, + onReactionOptionSelected: (ReactionOptionItemState) -> Unit, + ) { + ReactionMenuOptionItem( + modifier = modifier + .size(24.dp) + .size(ChatTheme.dimens.reactionOptionItemIconSize), + onReactionOptionSelected = onReactionOptionSelected, + option = option, + ) + } + + /** + * Factory method for creating the reactions menu more option. + * + * @param modifier The modifier + * @param message The selected message. + * @param onMessageAction Callback for when a message action is clicked. + * @param onDismiss Callback for when the menu is dismissed. + */ + @Composable + public fun MessageReactionPicker( + modifier: Modifier, + message: Message, + onMessageAction: (MessageAction) -> Unit, + onDismiss: () -> Unit, + ) { + ReactionsPicker( + modifier = modifier, + message = message, + onMessageAction = onMessageAction, + onDismiss = onDismiss + ) + } + + /** + * Factory method for creating the header content of the reaction picker. + * + * * @param modifier The modifier + * @param message The selected message. + * @param onMessageAction Callback for when a message action is clicked. + * @param onDismiss Callback for when the menu is dismissed. + */ + @Composable + public fun MessageReactionPickerHeaderContent( + modifier: Modifier, + message: Message, + onMessageAction: (MessageAction) -> Unit, + onDismiss: () -> Unit, + ) { + // This composable is empty on purpose. By default we don't have a header to the picker. + } + + /** + * Factory method for creating the center content of the reaction picker. + * + * @param modifier The modifier + * @param message The selected message. + * @param onMessageAction Callback for when a message action is clicked. + * @param reactionTypes The reaction types. + * @param onDismiss Callback for when the menu is dismissed. + */ + @Composable + public fun MessageReactionPickerCenterContent( + modifier: Modifier, + message: Message, + onMessageAction: (MessageAction) -> Unit, + reactionTypes: Map, + onDismiss: () -> Unit, + ) { + ExtendedReactionsMenuOptions( + modifier = modifier, + message = message, + reactionTypes = reactionTypes, + onMessageAction = onMessageAction, + ) + } + + // REGION: Generic menu items + /** + * Factory method for creating a generic menu option item. + * + * @param modifier The modifier for the menu item. + * @param title The title of the menu item. + * @param titleColor The color of the title. + * @param leadingIcon The leading icon of the menu item. + * @param onClick Callback for when the menu item is clicked. + */ + @Composable + public fun MenuOptionItem( + modifier: Modifier, + onClick: () -> Unit, + leadingIcon: @Composable RowScope.() -> Unit, + title: String, + titleColor: Color, + style: TextStyle, + itemHeight: Dp, + verticalAlignment: Alignment.Vertical, + horizontalArrangement: Arrangement.Horizontal, + ) { + GenericMenuOptionItem( + modifier = modifier, + onClick = onClick, + leadingIcon = leadingIcon, + title = title, + titleColor = titleColor, + style = style, + itemHeight = itemHeight, + verticalAlignment = verticalAlignment, + horizontalArrangement = horizontalArrangement, + ) + } } From b6b309556d075f2b7f33b16a0885eb7ed19d9d6a Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Mon, 3 Feb 2025 17:46:08 +0100 Subject: [PATCH 02/15] Api Dump and default values changes --- .../api/stream-chat-android-compose.api | 77 +++++++++++++++---- .../reactionoptions/ReactionOptions.kt | 4 +- .../compose/ui/theme/ChatComponentFactory.kt | 6 +- 3 files changed, 65 insertions(+), 22 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 df43797aa73..cf67936f8c8 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -980,15 +980,6 @@ public final class io/getstream/chat/android/compose/ui/components/channels/Comp public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } -public final class io/getstream/chat/android/compose/ui/components/channels/ComposableSingletons$ChannelOptionsItemKt { - public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/channels/ComposableSingletons$ChannelOptionsItemKt; - public static field lambda-1 Lkotlin/jvm/functions/Function2; - public static field lambda-2 Lkotlin/jvm/functions/Function2; - public fun ()V - public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; - public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; -} - public final class io/getstream/chat/android/compose/ui/components/channels/ComposableSingletons$ChannelOptionsKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/channels/ComposableSingletons$ChannelOptionsKt; public static field lambda-1 Lkotlin/jvm/functions/Function2; @@ -1021,6 +1012,10 @@ public final class io/getstream/chat/android/compose/ui/components/channels/Unre public static final fun UnreadCountIndicator-FNF3uiM (ILandroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V } +public final class io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItemKt { + public static final fun GenericMenuOptionItem-Y_kIC3U (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;II)V +} + public final class io/getstream/chat/android/compose/ui/components/composer/ComposableSingletons$InputFieldKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/composer/ComposableSingletons$InputFieldKt; public static field lambda-1 Lkotlin/jvm/functions/Function3; @@ -1067,7 +1062,7 @@ public final class io/getstream/chat/android/compose/ui/components/messageoption } public final class io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItemKt { - public static final fun MessageOptionItem (Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;II)V + public static final fun MessageOptionItem (Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V } public final class io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItemVisibility { @@ -1385,9 +1380,11 @@ public final class io/getstream/chat/android/compose/ui/components/reactionoptio public final class io/getstream/chat/android/compose/ui/components/reactionoptions/ComposableSingletons$ReactionOptionsKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/reactionoptions/ComposableSingletons$ReactionOptionsKt; - public static field lambda-1 Lkotlin/jvm/functions/Function2; + public static field lambda-1 Lkotlin/jvm/functions/Function5; + public static field lambda-2 Lkotlin/jvm/functions/Function2; public fun ()V - public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function5; + public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } public final class io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptionsKt { @@ -1399,16 +1396,14 @@ public final class io/getstream/chat/android/compose/ui/components/reactionoptio } public final class io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptionsKt { - public static final fun ReactionOptions (Ljava/util/List;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ILandroidx/compose/foundation/layout/Arrangement$Horizontal;Ljava/util/Map;ILkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V + public static final fun ReactionOptions (Ljava/util/List;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ILandroidx/compose/foundation/layout/Arrangement$Horizontal;Ljava/util/Map;ILkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V } public final class io/getstream/chat/android/compose/ui/components/reactionpicker/ComposableSingletons$ReactionsPickerKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/reactionpicker/ComposableSingletons$ReactionsPickerKt; - public static field lambda-1 Lkotlin/jvm/functions/Function3; - public static field lambda-2 Lkotlin/jvm/functions/Function2; + public static field lambda-1 Lkotlin/jvm/functions/Function2; public fun ()V - public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } public final class io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPickerKt { @@ -2106,6 +2101,15 @@ public abstract interface class io/getstream/chat/android/compose/ui/theme/ChatC public abstract fun ChannelListLoadingIndicator (Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V public abstract fun ChannelListLoadingMoreItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V public abstract fun ChannelListSearchResultItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/compose/state/channels/list/ItemState$SearchResultItemState;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelMenu (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Channel;ZLio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelMenuCenterContent (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelMenuHeaderContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelMenuOptions (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelOptionsItem (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/channels/list/ChannelOptionState;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelOptionsItemLeadingIcon (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/channels/list/ChannelOptionState;Landroidx/compose/runtime/Composer;I)V + public abstract fun ExtendedReactionMenuOptionItem (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun ExtendedReactionsMenuOptions (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MenuOptionItem-ws93vos (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageDeletedContent (Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageFooterContent (Lio/getstream/chat/android/ui/common/state/messages/list/MessageItemState;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageFooterOnlyVisibleToYouContent (Lio/getstream/chat/android/ui/common/state/messages/list/MessageItemState;Landroidx/compose/runtime/Composer;I)V @@ -2135,9 +2139,24 @@ public abstract interface class io/getstream/chat/android/compose/ui/theme/ChatC public abstract fun MessageListThreadDateSeparatorItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/ThreadDateSeparatorItemState;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageListTypingIndicatorItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/TypingItemState;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageListUnreadSeparatorItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/UnreadSeparatorItemState;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenu (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Ljava/util/Set;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuCenterContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/util/Set;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuHeaderContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/util/Set;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuOptions (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuOptionsItem (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuOptionsItemLeadingContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageQuotedContent (Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageReactionPicker (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageReactionPickerCenterContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Ljava/util/Map;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageReactionPickerHeaderContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageRegularContent (Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageTextContent (Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun ReactionMenuOptionItem (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun ReactionMenuOptions (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun ReactionMenuShowMore (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;ILandroidx/compose/runtime/Composer;I)V + public abstract fun ReactionsMenu (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Ljava/util/Set;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun ReactionsMenuCenterContent (Landroidx/compose/ui/Modifier;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public abstract fun ReactionsMenuHeaderContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V public abstract fun SearchInputLabel (Landroidx/compose/runtime/Composer;I)V public abstract fun SearchInputLeadingIcon (Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V } @@ -2157,6 +2176,15 @@ public final class io/getstream/chat/android/compose/ui/theme/ChatComponentFacto public static fun ChannelListLoadingIndicator (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V public static fun ChannelListLoadingMoreItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V public static fun ChannelListSearchResultItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/compose/state/channels/list/ItemState$SearchResultItemState;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelMenu (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Channel;ZLio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelMenuCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelMenuHeaderContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelMenuOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelOptionsItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/channels/list/ChannelOptionState;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelOptionsItemLeadingIcon (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/channels/list/ChannelOptionState;Landroidx/compose/runtime/Composer;I)V + public static fun ExtendedReactionMenuOptionItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun ExtendedReactionsMenuOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MenuOptionItem-ws93vos (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;I)V public static fun MessageDeletedContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V public static fun MessageFooterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/ui/common/state/messages/list/MessageItemState;Landroidx/compose/runtime/Composer;I)V public static fun MessageFooterOnlyVisibleToYouContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/ui/common/state/messages/list/MessageItemState;Landroidx/compose/runtime/Composer;I)V @@ -2186,9 +2214,24 @@ public final class io/getstream/chat/android/compose/ui/theme/ChatComponentFacto public static fun MessageListThreadDateSeparatorItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/ThreadDateSeparatorItemState;Landroidx/compose/runtime/Composer;I)V public static fun MessageListTypingIndicatorItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/TypingItemState;Landroidx/compose/runtime/Composer;I)V public static fun MessageListUnreadSeparatorItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/UnreadSeparatorItemState;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenu (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Ljava/util/Set;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenuCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/util/Set;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenuHeaderContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/util/Set;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenuOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenuOptionsItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenuOptionsItemLeadingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Landroidx/compose/runtime/Composer;I)V public static fun MessageQuotedContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageReactionPicker (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageReactionPickerCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Ljava/util/Map;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageReactionPickerHeaderContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V public static fun MessageRegularContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V public static fun MessageTextContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun ReactionMenuOptionItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun ReactionMenuOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun ReactionMenuShowMore (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;ILandroidx/compose/runtime/Composer;I)V + public static fun ReactionsMenu (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Ljava/util/Set;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun ReactionsMenuCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public static fun ReactionsMenuHeaderContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V public static fun SearchInputLabel (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/runtime/Composer;I)V public static fun SearchInputLeadingIcon (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V } diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt index 3eb211dbca3..68241754893 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt @@ -22,6 +22,7 @@ import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.ripple import androidx.compose.runtime.Composable @@ -35,6 +36,7 @@ import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.reactionoptions.ReactionOptionItemState import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.compose.ui.util.ReactionIcon +import io.getstream.chat.android.compose.ui.util.size import io.getstream.chat.android.models.Reaction /** @@ -66,7 +68,7 @@ public fun ReactionOptions( itemContent: @Composable RowScope.(ReactionOptionItemState) -> Unit = { option -> with(ChatTheme.componentFactory) { ReactionMenuOptionItem( - modifier = Modifier, + modifier = Modifier.size(ChatTheme.dimens.reactionOptionItemIconSize), option = option, onReactionOptionSelected = onReactionOptionSelected, ) 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 40d87d52e85..18962576f6e 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 @@ -118,6 +118,7 @@ import io.getstream.chat.android.compose.ui.messages.list.DefaultMessagesLoading import io.getstream.chat.android.compose.ui.messages.list.DefaultSystemMessageContent import io.getstream.chat.android.compose.ui.messages.list.MessagesLazyListState import io.getstream.chat.android.compose.ui.util.ReactionIcon +import io.getstream.chat.android.compose.ui.util.size import io.getstream.chat.android.models.Channel import io.getstream.chat.android.models.ConnectionState import io.getstream.chat.android.models.Message @@ -1351,8 +1352,6 @@ public interface ChatComponentFactory { ) { ReactionOptionItem( modifier = modifier - .size(24.dp) - .size(ChatTheme.dimens.reactionOptionItemIconSize) .clickable( interactionSource = remember { MutableInteractionSource() }, indication = ripple(bounded = false), @@ -1433,8 +1432,7 @@ public interface ChatComponentFactory { ) { ReactionMenuOptionItem( modifier = modifier - .size(24.dp) - .size(ChatTheme.dimens.reactionOptionItemIconSize), + .padding(8.dp), onReactionOptionSelected = onReactionOptionSelected, option = option, ) From 93f7d38d7c513e290213a77f96e97ddd9cce14c6 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Mon, 3 Feb 2025 17:47:12 +0100 Subject: [PATCH 03/15] Spotless --- .../ui/component/CustomChatComponentFactory.kt | 9 --------- .../ui/channels/info/SelectedChannelMenu.kt | 1 - .../ui/components/channels/ChannelOptions.kt | 3 --- .../components/common/GenericMenuOptionItem.kt | 18 +++++++++++++++++- .../messageoptions/MessageOptionItem.kt | 3 --- .../messageoptions/MessageOptions.kt | 6 ------ .../ExtendedReactionsOptions.kt | 2 +- .../reactionoptions/ReactionOptions.kt | 7 ------- .../reactionpicker/ReactionsPicker.kt | 7 +------ .../selectedmessage/SelectedReactionsMenu.kt | 8 +------- .../compose/ui/theme/ChatComponentFactory.kt | 11 +---------- 11 files changed, 21 insertions(+), 54 deletions(-) diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/component/CustomChatComponentFactory.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/component/CustomChatComponentFactory.kt index e9e253d2ddb..af68d4bc72a 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/component/CustomChatComponentFactory.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/component/CustomChatComponentFactory.kt @@ -17,18 +17,9 @@ package io.getstream.chat.android.compose.sample.ui.component import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.RowScope -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp import io.getstream.chat.android.client.extensions.isPinned import io.getstream.chat.android.compose.state.channels.list.ItemState import io.getstream.chat.android.compose.ui.channels.list.ChannelItem diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/info/SelectedChannelMenu.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/info/SelectedChannelMenu.kt index 9b0a2c907a0..8a06dbb2ef3 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/info/SelectedChannelMenu.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/info/SelectedChannelMenu.kt @@ -37,7 +37,6 @@ import androidx.compose.ui.unit.dp import io.getstream.chat.android.compose.state.channels.list.ChannelOptionState import io.getstream.chat.android.compose.ui.components.SimpleMenu import io.getstream.chat.android.compose.ui.components.channels.ChannelMembers -import io.getstream.chat.android.compose.ui.components.channels.ChannelOptions import io.getstream.chat.android.compose.ui.components.channels.buildDefaultChannelOptionsState import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.compose.ui.util.getMembersStatusText diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptions.kt index 63d143446a3..8ba2f49a5b8 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/channels/ChannelOptions.kt @@ -20,12 +20,9 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt index 478c232417a..03e4855b47f 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2014-2025 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.components.common import androidx.compose.foundation.clickable @@ -65,4 +81,4 @@ public fun GenericMenuOptionItem( color = titleColor, ) } -} \ No newline at end of file +} diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt index cef318ead78..d857c643c4c 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt @@ -17,15 +17,12 @@ package io.getstream.chat.android.compose.ui.components.messageoptions import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Icon -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptions.kt index ccaf6eb3357..fd56f3917ea 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptions.kt @@ -16,16 +16,10 @@ package io.getstream.chat.android.compose.ui.components.messageoptions -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.key -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptions.kt index e13e832a0e5..93cb10aa20a 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptions.kt @@ -60,7 +60,7 @@ public fun ExtendedReactionsOptions( ExtendedReactionMenuOptionItem( modifier = Modifier.padding(vertical = 8.dp), onReactionOptionSelected = onReactionOptionSelected, - option = option + option = option, ) } }, diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt index 68241754893..e0419b1034d 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt @@ -17,20 +17,13 @@ package io.getstream.chat.android.compose.ui.components.reactionoptions import androidx.annotation.DrawableRes -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon -import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.key -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.reactionoptions.ReactionOptionItemState diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPicker.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPicker.kt index 2f6bf5e09cc..3cb44fc9b76 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPicker.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPicker.kt @@ -18,23 +18,19 @@ package io.getstream.chat.android.compose.ui.components.reactionpicker import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp import io.getstream.chat.android.compose.ui.components.SimpleMenu import io.getstream.chat.android.compose.ui.components.reactionoptions.ExtendedReactionsOptions import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.compose.ui.util.ReactionIcon import io.getstream.chat.android.models.Message -import io.getstream.chat.android.models.Reaction import io.getstream.chat.android.previewdata.PreviewMessageData import io.getstream.chat.android.ui.common.state.messages.MessageAction -import io.getstream.chat.android.ui.common.state.messages.React /** * The default maximum number of reactions shown in the picker. @@ -91,8 +87,7 @@ public fun ReactionsPicker( centerContent = centerContent, onDismiss = onDismiss, ) - } - +} /** * Preview of [ReactionsPicker] with a reaction selected. diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt index 3a195e99042..bccd9ac8123 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt @@ -18,15 +18,11 @@ package io.getstream.chat.android.compose.ui.components.selectedmessage import androidx.annotation.DrawableRes import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.heightIn -import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.userreactions.UserReactionItemState import io.getstream.chat.android.compose.ui.components.SimpleMenu @@ -37,12 +33,10 @@ import io.getstream.chat.android.compose.ui.util.ReactionIcon import io.getstream.chat.android.compose.util.extensions.toSet import io.getstream.chat.android.models.ChannelCapabilities import io.getstream.chat.android.models.Message -import io.getstream.chat.android.models.Reaction import io.getstream.chat.android.models.User import io.getstream.chat.android.previewdata.PreviewReactionData import io.getstream.chat.android.previewdata.PreviewUserData import io.getstream.chat.android.ui.common.state.messages.MessageAction -import io.getstream.chat.android.ui.common.state.messages.React /** * Represents the list of user reactions. @@ -98,7 +92,7 @@ public fun SelectedReactionsMenu( userReactions = buildUserReactionItems( message = message, currentUser = currentUser, - ) + ), ) } }, 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 18962576f6e..dc475d88481 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 @@ -16,11 +16,6 @@ package io.getstream.chat.android.compose.ui.theme -import androidx.annotation.DrawableRes -import androidx.compose.animation.core.AnimationConstants -import androidx.compose.animation.core.tween -import androidx.compose.animation.slideInVertically -import androidx.compose.animation.slideOutVertically import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource @@ -29,14 +24,11 @@ import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.lazy.grid.GridCells -import androidx.compose.foundation.lazy.grid.LazyGridScope import androidx.compose.material3.Icon import androidx.compose.material3.ripple import androidx.compose.runtime.Composable @@ -44,7 +36,6 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.Shape import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -1457,7 +1448,7 @@ public interface ChatComponentFactory { modifier = modifier, message = message, onMessageAction = onMessageAction, - onDismiss = onDismiss + onDismiss = onDismiss, ) } From 1e29dd5a385ebe69b3b9673ad2ad8de742bf7992 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Mon, 3 Feb 2025 17:51:02 +0100 Subject: [PATCH 04/15] Merge conflict and api & spotless --- .../api/stream-chat-android-compose.api | 52 +++++++++++++++++++ .../compose/ui/theme/ChatComponentFactory.kt | 7 ++- 2 files changed, 55 insertions(+), 4 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 cf67936f8c8..50dcdb87110 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -1029,9 +1029,11 @@ public final class io/getstream/chat/android/compose/ui/components/composer/Comp public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/composer/ComposableSingletons$MessageInputKt; public static field lambda-1 Lkotlin/jvm/functions/Function3; public static field lambda-2 Lkotlin/jvm/functions/Function3; + public static field lambda-3 Lkotlin/jvm/functions/Function3; public fun ()V public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3; public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda-3$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3; } public final class io/getstream/chat/android/compose/ui/components/composer/ComposerLinkPreviewKt { @@ -1812,8 +1814,10 @@ public final class io/getstream/chat/android/compose/ui/messages/attachments/pol public final class io/getstream/chat/android/compose/ui/messages/composer/ComposableSingletons$MessageComposerKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/messages/composer/ComposableSingletons$MessageComposerKt; public static field lambda-1 Lkotlin/jvm/functions/Function3; + public static field lambda-2 Lkotlin/jvm/functions/Function3; public fun ()V public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3; } public final class io/getstream/chat/android/compose/ui/messages/composer/MessageComposerKt { @@ -2110,6 +2114,30 @@ public abstract interface class io/getstream/chat/android/compose/ui/theme/ChatC public abstract fun ExtendedReactionMenuOptionItem (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V public abstract fun ExtendedReactionsMenuOptions (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V public abstract fun MenuOptionItem-ws93vos (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerAttachmentsButton (Landroidx/compose/foundation/layout/RowScope;ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerAudioRecordButton (Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerAudioRecordingContent (Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerCommandSuggestionItem (Lio/getstream/chat/android/models/Command;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerCommandSuggestionItemCenterContent (Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Command;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerCommandSuggestionItemLeadingContent (Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/models/Command;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerCommandsButton (Landroidx/compose/foundation/layout/RowScope;ZZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerCommandsPopupContent (Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerCoolDownIndicator (Landroidx/compose/ui/Modifier;ILandroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerFooterContent (Landroidx/compose/foundation/layout/ColumnScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerHeaderContent (Landroidx/compose/foundation/layout/ColumnScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerInput (Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerIntegrations (Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerLabel (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerLinkPreview (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/LinkPreview;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerMentionSuggestionItem (Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerMentionSuggestionItemCenterContent (Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerMentionSuggestionItemLeadingContent (Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerMentionSuggestionItemTrailingContent (Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerMentionsPopupContent (Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerMessageInputOptions (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerQuotedMessage (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lio/getstream/chat/android/models/Message;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerSendButton (ZZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageComposerTrailingContent (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function2;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageDeletedContent (Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageFooterContent (Lio/getstream/chat/android/ui/common/state/messages/list/MessageItemState;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageFooterOnlyVisibleToYouContent (Lio/getstream/chat/android/ui/common/state/messages/list/MessageItemState;Landroidx/compose/runtime/Composer;I)V @@ -2185,6 +2213,30 @@ public final class io/getstream/chat/android/compose/ui/theme/ChatComponentFacto public static fun ExtendedReactionMenuOptionItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V public static fun ExtendedReactionsMenuOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V public static fun MenuOptionItem-ws93vos (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerAttachmentsButton (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerAudioRecordButton (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerAudioRecordingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerCommandSuggestionItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/models/Command;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerCommandSuggestionItemCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Command;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerCommandSuggestionItemLeadingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/models/Command;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerCommandsButton (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;ZZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerCommandsPopupContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerCoolDownIndicator (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;ILandroidx/compose/runtime/Composer;I)V + public static fun MessageComposerFooterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/ColumnScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerHeaderContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/ColumnScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerInput (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerIntegrations (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerLabel (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerLinkPreview (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/LinkPreview;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerMentionSuggestionItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerMentionSuggestionItemCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerMentionSuggestionItemLeadingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerMentionSuggestionItemTrailingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerMentionsPopupContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerMessageInputOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerQuotedMessage (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lio/getstream/chat/android/models/Message;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerSendButton (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;ZZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerTrailingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function2;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V public static fun MessageDeletedContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V public static fun MessageFooterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/ui/common/state/messages/list/MessageItemState;Landroidx/compose/runtime/Composer;I)V public static fun MessageFooterOnlyVisibleToYouContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/ui/common/state/messages/list/MessageItemState;Landroidx/compose/runtime/Composer;I)V 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 a9d7be9d126..4b09a30da7c 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 @@ -70,10 +70,10 @@ import io.getstream.chat.android.compose.ui.components.NetworkLoadingIndicator import io.getstream.chat.android.compose.ui.components.channels.ChannelOptions import io.getstream.chat.android.compose.ui.components.channels.MessageReadStatusIcon import io.getstream.chat.android.compose.ui.components.common.GenericMenuOptionItem -import io.getstream.chat.android.compose.ui.components.messageoptions.MessageOptions import io.getstream.chat.android.compose.ui.components.composer.ComposerLinkPreview import io.getstream.chat.android.compose.ui.components.composer.CoolDownIndicator import io.getstream.chat.android.compose.ui.components.composer.MessageInputOptions +import io.getstream.chat.android.compose.ui.components.messageoptions.MessageOptions import io.getstream.chat.android.compose.ui.components.messages.DefaultMessageContent import io.getstream.chat.android.compose.ui.components.messages.DefaultMessageDeletedContent import io.getstream.chat.android.compose.ui.components.messages.DefaultMessageGiphyContent @@ -90,7 +90,6 @@ import io.getstream.chat.android.compose.ui.components.reactionoptions.ReactionO import io.getstream.chat.android.compose.ui.components.reactionpicker.ReactionsPicker import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedMessageMenu import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedReactionsMenu -import io.getstream.chat.android.compose.ui.components.userreactions.UserReactions import io.getstream.chat.android.compose.ui.components.suggestions.commands.CommandSuggestionItem import io.getstream.chat.android.compose.ui.components.suggestions.commands.CommandSuggestionList import io.getstream.chat.android.compose.ui.components.suggestions.commands.DefaultCommandSuggestionItemCenterContent @@ -100,6 +99,7 @@ import io.getstream.chat.android.compose.ui.components.suggestions.mentions.Defa import io.getstream.chat.android.compose.ui.components.suggestions.mentions.DefaultMentionSuggestionItemTrailingContent import io.getstream.chat.android.compose.ui.components.suggestions.mentions.MentionSuggestionItem import io.getstream.chat.android.compose.ui.components.suggestions.mentions.MentionSuggestionList +import io.getstream.chat.android.compose.ui.components.userreactions.UserReactions import io.getstream.chat.android.compose.ui.messages.composer.AttachmentsButton import io.getstream.chat.android.compose.ui.messages.composer.CommandsButton import io.getstream.chat.android.compose.ui.messages.composer.DefaultComposerInputContent @@ -146,13 +146,12 @@ import io.getstream.chat.android.models.Reaction import io.getstream.chat.android.models.ReactionSorting import io.getstream.chat.android.models.User import io.getstream.chat.android.models.Vote -import io.getstream.chat.android.ui.common.state.messages.MessageAction import io.getstream.chat.android.ui.common.state.channels.actions.ChannelAction import io.getstream.chat.android.ui.common.state.messages.MessageAction import io.getstream.chat.android.ui.common.state.messages.MessageMode +import io.getstream.chat.android.ui.common.state.messages.React import io.getstream.chat.android.ui.common.state.messages.composer.MessageComposerState import io.getstream.chat.android.ui.common.state.messages.composer.RecordingState -import io.getstream.chat.android.ui.common.state.messages.React import io.getstream.chat.android.ui.common.state.messages.list.DateSeparatorItemState import io.getstream.chat.android.ui.common.state.messages.list.EmptyThreadPlaceholderItemState import io.getstream.chat.android.ui.common.state.messages.list.GiphyAction From cea16f94ceca7420678415cc2411b16885024f58 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Tue, 4 Feb 2025 09:36:49 +0100 Subject: [PATCH 05/15] Fix lint --- .../ui/components/reactionoptions/ReactionOptions.kt | 5 ++++- .../android/compose/ui/theme/ChatComponentFactory.kt | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt index e0419b1034d..3a707ba4c7b 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptions.kt @@ -67,7 +67,10 @@ public fun ReactionOptions( ) } }, - showMore: @Composable RowScope.(onShowMoreReactionsSelected: () -> Unit, showMoreReactionsIcon: Int) -> Unit = { par1, par2 -> + showMore: @Composable RowScope.( + onShowMoreReactionsSelected: () -> Unit, + showMoreReactionsIcon: Int, + ) -> Unit = { par1, par2 -> with(ChatTheme.componentFactory) { ReactionMenuShowMore(Modifier, par1, par2) } 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 4b09a30da7c..b4b48ed4631 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 @@ -171,6 +171,9 @@ import io.getstream.chat.android.ui.common.state.messages.poll.PollSelectionType */ internal class DefaultChatComponentFactory : ChatComponentFactory +// Default values +private const val DefaultCellsCount: Int = 5 + /** * Factory for creating stateless components that are used by default throughout the Chat UI. * @@ -219,7 +222,7 @@ internal class DefaultChatComponentFactory : ChatComponentFactory * } * ``` */ -@Suppress("TooManyFunctions", "LargeClass") +@Suppress("TooManyFunctions", "LargeClass", "LongParameterList") public interface ChatComponentFactory { /** @@ -1600,7 +1603,8 @@ public interface ChatComponentFactory { onMessageOptionSelected: (MessageOptionItemState) -> Unit, ) { val title = stringResource(id = option.title) - // Not using directly the [MessageOptionsItem] because that one contains our default behavior which is not overridable. + // Not using directly the [MessageOptionsItem] because + // that one contains our default behavior which is not overridable. MenuOptionItem( modifier = modifier, title = title, @@ -1822,7 +1826,7 @@ public interface ChatComponentFactory { ), ) }, - cells = GridCells.Fixed(5), + cells = GridCells.Fixed(DefaultCellsCount), ownReactions = message.ownReactions, ) } From b9eaf4b6909af670d28896c89db8c1f9c06e2442 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Tue, 4 Feb 2025 10:20:36 +0100 Subject: [PATCH 06/15] Fix default height of message menu item --- .../chat/android/compose/ui/theme/ChatComponentFactory.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 b4b48ed4631..9e459e56044 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 @@ -24,6 +24,7 @@ import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size @@ -1606,7 +1607,9 @@ public interface ChatComponentFactory { // Not using directly the [MessageOptionsItem] because // that one contains our default behavior which is not overridable. MenuOptionItem( - modifier = modifier, + modifier = modifier + .fillMaxWidth() + .height(ChatTheme.dimens.messageOptionsItemHeight), title = title, titleColor = option.titleColor, leadingIcon = { From 0aa3c4370448e8b232e6b3f2380d68ec23c99ed8 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Tue, 4 Feb 2025 12:01:15 +0100 Subject: [PATCH 07/15] Do not break the old composables by not exposing the parameters --- .../android/compose/ui/channels/ChannelsScreen.kt | 1 - .../selectedmessage/SelectedMessageMenu.kt | 2 ++ .../selectedmessage/SelectedReactionsMenu.kt | 1 + .../compose/ui/theme/ChatComponentFactory.kt | 14 ++++++++++---- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/ChannelsScreen.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/ChannelsScreen.kt index ed9e9717be1..c8830b97910 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/ChannelsScreen.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/channels/ChannelsScreen.kt @@ -47,7 +47,6 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.channels.list.SearchQuery -import io.getstream.chat.android.compose.ui.channels.header.ChannelListHeader import io.getstream.chat.android.compose.ui.channels.list.ChannelList import io.getstream.chat.android.compose.ui.components.SearchInput import io.getstream.chat.android.compose.ui.components.SimpleDialog diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedMessageMenu.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedMessageMenu.kt index b00500fa832..b935be86e95 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedMessageMenu.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedMessageMenu.kt @@ -79,6 +79,8 @@ public fun SelectedMessageMenu( onMessageAction = onMessageAction, ownCapabilities = ownCapabilities, onShowMore = onShowMoreReactionsSelected, + reactionTypes = reactionTypes, + showMoreReactionsIcon = showMoreReactionsIcon, ) } } diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt index bccd9ac8123..8327b70ae4d 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/selectedmessage/SelectedReactionsMenu.kt @@ -81,6 +81,7 @@ public fun SelectedReactionsMenu( reactionTypes = reactionTypes, onMessageAction = onMessageAction, onShowMoreReactionsSelected = onShowMoreReactionsSelected, + showMoreReactionsIcon = showMoreReactionsIcon, ) } } 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 d1664a58c94..86b89cecf02 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 @@ -44,7 +44,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import io.getstream.chat.android.compose.R @@ -138,7 +137,6 @@ import io.getstream.chat.android.compose.ui.messages.list.DefaultMessagesLoading import io.getstream.chat.android.compose.ui.messages.list.DefaultSystemMessageContent import io.getstream.chat.android.compose.ui.messages.list.MessagesLazyListState import io.getstream.chat.android.compose.ui.util.ReactionIcon -import io.getstream.chat.android.compose.ui.util.size import io.getstream.chat.android.models.Attachment import io.getstream.chat.android.models.Channel import io.getstream.chat.android.models.Command @@ -1682,6 +1680,8 @@ public interface ChatComponentFactory { * @param ownCapabilities The capabilities of the current user. * @param onShowMore Callback for when the show more reactions option is clicked. * @param onMessageAction Callback for when a message action is clicked. + * @param reactionTypes The reaction types. + * @param showMoreReactionsIcon The icon to show for the "Show more reactions" option. */ @Composable public fun MessageMenuHeaderContent( @@ -1691,13 +1691,16 @@ public interface ChatComponentFactory { onMessageAction: (MessageAction) -> Unit, ownCapabilities: Set, onShowMore: () -> Unit, + reactionTypes: Map, + showMoreReactionsIcon: Int, ) { ReactionMenuOptions( modifier = modifier, message = message, - reactionTypes = ChatTheme.reactionIconFactory.createReactionIcons(), + reactionTypes = reactionTypes, onMessageAction = onMessageAction, onShowMoreReactionsSelected = onShowMore, + showMoreReactionsIcon = showMoreReactionsIcon, ) } @@ -1816,6 +1819,7 @@ public interface ChatComponentFactory { reactionTypes: Map, onMessageAction: (MessageAction) -> Unit, onShowMoreReactionsSelected: () -> Unit, + showMoreReactionsIcon: Int, ) { ReactionMenuOptions( modifier = modifier, @@ -1823,6 +1827,7 @@ public interface ChatComponentFactory { reactionTypes = reactionTypes, onMessageAction = onMessageAction, onShowMoreReactionsSelected = onShowMoreReactionsSelected, + showMoreReactionsIcon = showMoreReactionsIcon, ) } @@ -1861,13 +1866,14 @@ public interface ChatComponentFactory { reactionTypes: Map, onMessageAction: (MessageAction) -> Unit, onShowMoreReactionsSelected: () -> Unit, + showMoreReactionsIcon: Int, ) { ReactionOptions( modifier = modifier .fillMaxWidth() .padding(start = 16.dp, end = 16.dp, bottom = 8.dp, top = 20.dp), reactionTypes = reactionTypes, - showMoreReactionsIcon = R.drawable.stream_compose_ic_more, + showMoreReactionsIcon = showMoreReactionsIcon, onReactionOptionSelected = { onMessageAction( React( From db18a56357568956655ec50657d19090748aff81 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Tue, 4 Feb 2025 12:17:39 +0100 Subject: [PATCH 08/15] Spotless & Api Dump --- .../api/stream-chat-android-compose.api | 77 +++++++++++++++---- .../compose/ui/theme/ChatComponentFactory.kt | 6 +- 2 files changed, 63 insertions(+), 20 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 262a90f6d78..ca516295730 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -984,15 +984,6 @@ public final class io/getstream/chat/android/compose/ui/components/channels/Comp public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } -public final class io/getstream/chat/android/compose/ui/components/channels/ComposableSingletons$ChannelOptionsItemKt { - public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/channels/ComposableSingletons$ChannelOptionsItemKt; - public static field lambda-1 Lkotlin/jvm/functions/Function2; - public static field lambda-2 Lkotlin/jvm/functions/Function2; - public fun ()V - public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; - public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; -} - public final class io/getstream/chat/android/compose/ui/components/channels/ComposableSingletons$ChannelOptionsKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/channels/ComposableSingletons$ChannelOptionsKt; public static field lambda-1 Lkotlin/jvm/functions/Function2; @@ -1025,6 +1016,10 @@ public final class io/getstream/chat/android/compose/ui/components/channels/Unre public static final fun UnreadCountIndicator-FNF3uiM (ILandroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V } +public final class io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItemKt { + public static final fun GenericMenuOptionItem-Y_kIC3U (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;II)V +} + public final class io/getstream/chat/android/compose/ui/components/composer/ComposableSingletons$InputFieldKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/composer/ComposableSingletons$InputFieldKt; public static field lambda-1 Lkotlin/jvm/functions/Function3; @@ -1073,7 +1068,7 @@ public final class io/getstream/chat/android/compose/ui/components/messageoption } public final class io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItemKt { - public static final fun MessageOptionItem (Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;II)V + public static final fun MessageOptionItem (Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V } public final class io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItemVisibility { @@ -1391,9 +1386,11 @@ public final class io/getstream/chat/android/compose/ui/components/reactionoptio public final class io/getstream/chat/android/compose/ui/components/reactionoptions/ComposableSingletons$ReactionOptionsKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/reactionoptions/ComposableSingletons$ReactionOptionsKt; - public static field lambda-1 Lkotlin/jvm/functions/Function2; + public static field lambda-1 Lkotlin/jvm/functions/Function5; + public static field lambda-2 Lkotlin/jvm/functions/Function2; public fun ()V - public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function5; + public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } public final class io/getstream/chat/android/compose/ui/components/reactionoptions/ExtendedReactionsOptionsKt { @@ -1405,16 +1402,14 @@ public final class io/getstream/chat/android/compose/ui/components/reactionoptio } public final class io/getstream/chat/android/compose/ui/components/reactionoptions/ReactionOptionsKt { - public static final fun ReactionOptions (Ljava/util/List;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ILandroidx/compose/foundation/layout/Arrangement$Horizontal;Ljava/util/Map;ILkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)V + public static final fun ReactionOptions (Ljava/util/List;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ILandroidx/compose/foundation/layout/Arrangement$Horizontal;Ljava/util/Map;ILkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V } public final class io/getstream/chat/android/compose/ui/components/reactionpicker/ComposableSingletons$ReactionsPickerKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/components/reactionpicker/ComposableSingletons$ReactionsPickerKt; - public static field lambda-1 Lkotlin/jvm/functions/Function3; - public static field lambda-2 Lkotlin/jvm/functions/Function2; + public static field lambda-1 Lkotlin/jvm/functions/Function2; public fun ()V - public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda-2$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-1$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } public final class io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPickerKt { @@ -2121,7 +2116,16 @@ public abstract interface class io/getstream/chat/android/compose/ui/theme/ChatC public abstract fun ChannelListLoadingIndicator (Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V public abstract fun ChannelListLoadingMoreItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V public abstract fun ChannelListSearchResultItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/compose/state/channels/list/ItemState$SearchResultItemState;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelMenu (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Channel;ZLio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelMenuCenterContent (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelMenuHeaderContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelMenuOptions (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelOptionsItem (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/channels/list/ChannelOptionState;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun ChannelOptionsItemLeadingIcon (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/channels/list/ChannelOptionState;Landroidx/compose/runtime/Composer;I)V + public abstract fun ExtendedReactionMenuOptionItem (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun ExtendedReactionsMenuOptions (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V public abstract fun GroupAvatar (Landroidx/compose/ui/Modifier;Ljava/util/List;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MenuOptionItem-ws93vos (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageComposerAttachmentsButton (Landroidx/compose/foundation/layout/RowScope;ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageComposerAudioRecordButton (Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageComposerAudioRecordingContent (Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V @@ -2175,9 +2179,24 @@ public abstract interface class io/getstream/chat/android/compose/ui/theme/ChatC public abstract fun MessageListThreadDateSeparatorItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/ThreadDateSeparatorItemState;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageListTypingIndicatorItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/TypingItemState;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageListUnreadSeparatorItemContent (Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/UnreadSeparatorItemState;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenu (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Ljava/util/Set;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuCenterContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/util/Set;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuHeaderContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/util/Set;Lkotlin/jvm/functions/Function0;Ljava/util/Map;ILandroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuOptions (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuOptionsItem (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageMenuOptionsItemLeadingContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageQuotedContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageReactionPicker (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageReactionPickerCenterContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Ljava/util/Map;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun MessageReactionPickerHeaderContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageRegularContent (Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V public abstract fun MessageTextContent (Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun ReactionMenuOptionItem (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public abstract fun ReactionMenuOptions (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILandroidx/compose/runtime/Composer;I)V + public abstract fun ReactionMenuShowMore (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;ILandroidx/compose/runtime/Composer;I)V + public abstract fun ReactionsMenu (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Ljava/util/Set;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public abstract fun ReactionsMenuCenterContent (Landroidx/compose/ui/Modifier;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public abstract fun ReactionsMenuHeaderContent (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILandroidx/compose/runtime/Composer;I)V public abstract fun SearchInputLabel (Landroidx/compose/runtime/Composer;I)V public abstract fun SearchInputLeadingIcon (Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V public abstract fun UserAvatar (Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Landroidx/compose/ui/text/TextStyle;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V @@ -2201,7 +2220,16 @@ public final class io/getstream/chat/android/compose/ui/theme/ChatComponentFacto public static fun ChannelListLoadingIndicator (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V public static fun ChannelListLoadingMoreItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V public static fun ChannelListSearchResultItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/compose/state/channels/list/ItemState$SearchResultItemState;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelMenu (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Channel;ZLio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelMenuCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelMenuHeaderContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Channel;Lio/getstream/chat/android/models/User;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelMenuOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelOptionsItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/channels/list/ChannelOptionState;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun ChannelOptionsItemLeadingIcon (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/channels/list/ChannelOptionState;Landroidx/compose/runtime/Composer;I)V + public static fun ExtendedReactionMenuOptionItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun ExtendedReactionsMenuOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V public static fun GroupAvatar (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Ljava/util/List;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MenuOptionItem-ws93vos (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;I)V public static fun MessageComposerAttachmentsButton (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V public static fun MessageComposerAudioRecordButton (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V public static fun MessageComposerAudioRecordingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Landroidx/compose/runtime/Composer;I)V @@ -2255,9 +2283,24 @@ public final class io/getstream/chat/android/compose/ui/theme/ChatComponentFacto public static fun MessageListThreadDateSeparatorItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/ThreadDateSeparatorItemState;Landroidx/compose/runtime/Composer;I)V public static fun MessageListTypingIndicatorItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/TypingItemState;Landroidx/compose/runtime/Composer;I)V public static fun MessageListUnreadSeparatorItemContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/lazy/LazyItemScope;Lio/getstream/chat/android/ui/common/state/messages/list/UnreadSeparatorItemState;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenu (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Ljava/util/Set;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenuCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/util/Set;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenuHeaderContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/util/Set;Lkotlin/jvm/functions/Function0;Ljava/util/Map;ILandroidx/compose/runtime/Composer;I)V + public static fun MessageMenuOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenuOptionsItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageMenuOptionsItemLeadingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/messageoptions/MessageOptionItemState;Landroidx/compose/runtime/Composer;I)V public static fun MessageQuotedContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun MessageReactionPicker (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageReactionPickerCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Ljava/util/Map;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun MessageReactionPickerHeaderContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V public static fun MessageRegularContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V public static fun MessageTextContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun ReactionMenuOptionItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/compose/state/reactionoptions/ReactionOptionItemState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V + public static fun ReactionMenuOptions (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILandroidx/compose/runtime/Composer;I)V + public static fun ReactionMenuShowMore (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;ILandroidx/compose/runtime/Composer;I)V + public static fun ReactionsMenu (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/Message;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Ljava/util/Set;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V + public static fun ReactionsMenuCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Ljava/util/List;Landroidx/compose/runtime/Composer;I)V + public static fun ReactionsMenuHeaderContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/Message;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILandroidx/compose/runtime/Composer;I)V public static fun SearchInputLabel (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/runtime/Composer;I)V public static fun SearchInputLeadingIcon (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V public static fun UserAvatar (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Landroidx/compose/ui/Modifier;Lio/getstream/chat/android/models/User;Landroidx/compose/ui/text/TextStyle;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V 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 86b89cecf02..4b2ea1b5291 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 @@ -36,15 +36,15 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.unit.DpOffset -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.channels.list.ChannelOptionState From f86f40d80a87e5ba5ff3b652dbb37c872c1793c7 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Tue, 4 Feb 2025 12:18:59 +0100 Subject: [PATCH 09/15] Make MessageOptionItemDeprecated --- .../ui/components/messageoptions/MessageOptionItem.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt index d857c643c4c..50d21e9263b 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt @@ -43,6 +43,11 @@ import io.getstream.chat.android.ui.common.state.messages.Reply * @param horizontalArrangement Used to apply horizontal arrangement. */ @Composable +@Deprecated( + message = "This class is deprecated and will be removed in the next version.", + replaceWith = ReplaceWith("GenericMenuOptionItem"), + level = DeprecationLevel.WARNING, +) public fun MessageOptionItem( option: MessageOptionItemState, modifier: Modifier = Modifier, From d104e89b703561fc2fb3a5a2d87028d04c234a86 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Tue, 4 Feb 2025 12:25:29 +0100 Subject: [PATCH 10/15] Fix merge issues --- .../getstream/chat/android/compose/sample/ui/MessagesActivity.kt | 1 - 1 file changed, 1 deletion(-) 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 c6f2a578bd1..f34b3dd4715 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 @@ -152,7 +152,6 @@ class MessagesActivity : BaseConnectedActivity() { autoTranslationEnabled = ChatApp.autoTranslationEnabled, isComposerLinkPreviewEnabled = ChatApp.isComposerLinkPreviewEnabled, allowUIAutomationTest = true, - componentFactory = CustomChatComponentFactory(), messageComposerTheme = messageComposerTheme.let { it.copy( attachmentCancelIcon = it.attachmentCancelIcon.copy( From c5c44825c7000fc590711426c2801eea6f1c4da2 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Tue, 4 Feb 2025 16:47:30 +0100 Subject: [PATCH 11/15] Remove padding declaration in the factory. --- .../chat/android/compose/ui/theme/ChatComponentFactory.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 4b2ea1b5291..233f0ccce16 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 @@ -1981,8 +1981,7 @@ public interface ChatComponentFactory { onReactionOptionSelected: (ReactionOptionItemState) -> Unit, ) { ReactionMenuOptionItem( - modifier = modifier - .padding(8.dp), + modifier = modifier, onReactionOptionSelected = onReactionOptionSelected, option = option, ) From ec7e6bd7d1e3199cedfcb45cccf229eebbbf3e39 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Tue, 4 Feb 2025 17:08:35 +0100 Subject: [PATCH 12/15] Rename the public function WITHOUT `Generic` --- .../common/{GenericMenuOptionItem.kt => MenuOptionItem.kt} | 2 +- .../compose/ui/components/messageoptions/MessageOptionItem.kt | 4 ++-- .../chat/android/compose/ui/theme/ChatComponentFactory.kt | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) rename stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/{GenericMenuOptionItem.kt => MenuOptionItem.kt} (98%) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/MenuOptionItem.kt similarity index 98% rename from stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt rename to stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/MenuOptionItem.kt index 03e4855b47f..45f478a0321 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItem.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/common/MenuOptionItem.kt @@ -50,7 +50,7 @@ import io.getstream.chat.android.compose.ui.theme.ChatTheme * @param horizontalArrangement Used to apply horizontal arrangement. */ @Composable -public fun GenericMenuOptionItem( +public fun MenuOptionItem( modifier: Modifier = Modifier, onClick: () -> Unit, leadingIcon: @Composable RowScope.() -> Unit, diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt index 50d21e9263b..47af99cbd00 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageoptions/MessageOptionItem.kt @@ -29,7 +29,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.state.messageoptions.MessageOptionItemState -import io.getstream.chat.android.compose.ui.components.common.GenericMenuOptionItem +import io.getstream.chat.android.compose.ui.components.common.MenuOptionItem import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.previewdata.PreviewMessageData import io.getstream.chat.android.ui.common.state.messages.Reply @@ -56,7 +56,7 @@ public fun MessageOptionItem( onMessageOptionItemSelected: (MessageOptionItemState) -> Unit = {}, ) { val title = stringResource(id = option.title) - GenericMenuOptionItem( + MenuOptionItem( modifier = modifier, title = title, titleColor = option.titleColor, 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 233f0ccce16..ac2356ce27a 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 @@ -73,7 +73,6 @@ import io.getstream.chat.android.compose.ui.components.DefaultSearchLeadingIcon import io.getstream.chat.android.compose.ui.components.NetworkLoadingIndicator import io.getstream.chat.android.compose.ui.components.channels.ChannelOptions import io.getstream.chat.android.compose.ui.components.channels.MessageReadStatusIcon -import io.getstream.chat.android.compose.ui.components.common.GenericMenuOptionItem import io.getstream.chat.android.compose.ui.components.composer.ComposerLinkPreview import io.getstream.chat.android.compose.ui.components.composer.CoolDownIndicator import io.getstream.chat.android.compose.ui.components.composer.MessageInputOptions @@ -2075,7 +2074,7 @@ public interface ChatComponentFactory { verticalAlignment: Alignment.Vertical, horizontalArrangement: Arrangement.Horizontal, ) { - GenericMenuOptionItem( + io.getstream.chat.android.compose.ui.components.common.MenuOptionItem( modifier = modifier, onClick = onClick, leadingIcon = leadingIcon, From 7c42654bf05f88b243e9a8d87ef8b7fb34cb3f43 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Tue, 4 Feb 2025 17:16:54 +0100 Subject: [PATCH 13/15] ApiDump --- .../api/stream-chat-android-compose.api | 4 ++-- 1 file changed, 2 insertions(+), 2 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 ca516295730..f5257fff0d8 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -1016,8 +1016,8 @@ public final class io/getstream/chat/android/compose/ui/components/channels/Unre public static final fun UnreadCountIndicator-FNF3uiM (ILandroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V } -public final class io/getstream/chat/android/compose/ui/components/common/GenericMenuOptionItemKt { - public static final fun GenericMenuOptionItem-Y_kIC3U (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;II)V +public final class io/getstream/chat/android/compose/ui/components/common/MenuOptionItemKt { + public static final fun MenuOptionItem-Y_kIC3U (Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Ljava/lang/String;JLandroidx/compose/ui/text/TextStyle;FLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/runtime/Composer;II)V } public final class io/getstream/chat/android/compose/ui/components/composer/ComposableSingletons$InputFieldKt { From 87c9bb34102f4bd2e78eba9fe789cc5d9ee7a556 Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Wed, 5 Feb 2025 12:00:02 +0100 Subject: [PATCH 14/15] spotless --- .../chat/android/compose/ui/theme/ChatComponentFactory.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8f04dd425ca..965fead233c 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 @@ -135,7 +135,6 @@ import io.getstream.chat.android.compose.ui.messages.list.DefaultMessagesHelperC import io.getstream.chat.android.compose.ui.messages.list.DefaultMessagesLoadingMoreIndicator import io.getstream.chat.android.compose.ui.messages.list.DefaultSystemMessageContent import io.getstream.chat.android.compose.ui.messages.list.MessagesLazyListState -import io.getstream.chat.android.compose.ui.util.ReactionIcon import io.getstream.chat.android.compose.ui.threads.DefaultThreadListEmptyContent import io.getstream.chat.android.compose.ui.threads.DefaultThreadListLoadingContent import io.getstream.chat.android.compose.ui.threads.DefaultThreadListLoadingMoreContent @@ -145,6 +144,7 @@ import io.getstream.chat.android.compose.ui.threads.ThreadItemReplyToContent import io.getstream.chat.android.compose.ui.threads.ThreadItemTitle import io.getstream.chat.android.compose.ui.threads.ThreadItemUnreadCountContent import io.getstream.chat.android.compose.ui.threads.UnreadThreadsBanner +import io.getstream.chat.android.compose.ui.util.ReactionIcon import io.getstream.chat.android.models.Attachment import io.getstream.chat.android.models.Channel import io.getstream.chat.android.models.Command From 84dc55bacb88a681758101a018eba2872b410bba Mon Sep 17 00:00:00 2001 From: Aleksandar Apostolov Date: Wed, 5 Feb 2025 12:31:41 +0100 Subject: [PATCH 15/15] Fix padding --- .../chat/android/compose/ui/theme/ChatComponentFactory.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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 965fead233c..85d1b979919 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 @@ -1960,8 +1960,7 @@ public interface ChatComponentFactory { ) { ExtendedReactionsOptions( modifier = modifier - .fillMaxWidth() - .padding(start = 16.dp, end = 16.dp, bottom = 8.dp, top = 20.dp), + .fillMaxWidth(), reactionTypes = reactionTypes, onReactionOptionSelected = { onMessageAction( @@ -2055,7 +2054,7 @@ public interface ChatComponentFactory { onDismiss: () -> Unit, ) { ExtendedReactionsMenuOptions( - modifier = modifier, + modifier = modifier.padding(start = 16.dp, end = 16.dp, top = 12.dp, bottom = 12.dp), message = message, reactionTypes = reactionTypes, onMessageAction = onMessageAction,