Package-level declarations

Functions

Link copied to clipboard
fun DefaultMessageComposerFooterContent(messageComposerState: MessageComposerState, onAlsoSendToChannelSelected: (Boolean) -> Unit)

Represents the default content shown at the bottom of the message composer component.

Link copied to clipboard
fun DefaultMessageComposerHeaderContent(    messageComposerState: MessageComposerState,     onCancelAction: () -> Unit,     onLinkPreviewClick: (LinkPreview) -> Unit? = null)

Represents the default content shown at the top of the message composer component.

Link copied to clipboard
fun MessageComposer(    viewModel: MessageComposerViewModel,     modifier: Modifier = Modifier,     onSendMessage: (Message) -> Unit = { viewModel.sendMessage(it) },     onAttachmentsClick: () -> Unit = {},     onCommandsClick: () -> Unit = {},     onValueChange: (String) -> Unit = { viewModel.setMessageInput(it) },     onAttachmentRemoved: (Attachment) -> Unit = { viewModel.removeSelectedAttachment(it) },     onCancelAction: () -> Unit = { viewModel.dismissMessageActions() },     onLinkPreviewClick: (LinkPreview) -> Unit? = null,     onMentionSelected: (User) -> Unit = { viewModel.selectMention(it) },     onCommandSelected: (Command) -> Unit = { viewModel.selectCommand(it) },     onAlsoSendToChannelSelected: (Boolean) -> Unit = { viewModel.setAlsoSendToChannel(it) },     recordingActions: AudioRecordingActions = AudioRecordingActions.defaultActions(viewModel),     headerContent: @Composable ColumnScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerHeaderContent( state = it, onCancel = onCancelAction, onLinkPreviewClick = onLinkPreviewClick, ) } },     footerContent: @Composable ColumnScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerFooterContent( state = it, onAlsoSendToChannelSelected = onAlsoSendToChannelSelected, ) } },     mentionPopupContent: @Composable (List<User>) -> Unit = { ChatTheme.componentFactory.MessageComposerMentionsPopupContent( mentionSuggestions = it, onMentionSelected = onMentionSelected, ) },     commandPopupContent: @Composable (List<Command>) -> Unit = { ChatTheme.componentFactory.MessageComposerCommandsPopupContent( commandSuggestions = it, onCommandSelected = onCommandSelected, ) },     integrations: @Composable RowScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerIntegrations( state = it, onAttachmentsClick = onAttachmentsClick, onCommandsClick = onCommandsClick, ) } },     label: @Composable (MessageComposerState) -> Unit = { ChatTheme.componentFactory.MessageComposerLabel(state = it) },     input: @Composable RowScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerInput( state = it, onInputChanged = onValueChange, onAttachmentRemoved = onAttachmentRemoved, label = label, ) } },     audioRecordingContent: @Composable RowScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerAudioRecordingContent( state = it, recordingActions = recordingActions, ) } },     trailingContent: @Composable (MessageComposerState) -> Unit = { ChatTheme.componentFactory.MessageComposerTrailingContent( state = it, onSendClick = { input, attachments -> val message = viewModel.buildNewMessage(input, attachments) onSendMessage(message) }, recordingActions = recordingActions, ) })

Default MessageComposer component that relies on MessageComposerViewModel to handle data and communicate various events.

fun MessageComposer(    messageComposerState: MessageComposerState,     onSendMessage: (String, List<Attachment>) -> Unit,     modifier: Modifier = Modifier,     onAttachmentsClick: () -> Unit = {},     onCommandsClick: () -> Unit = {},     onValueChange: (String) -> Unit = {},     onAttachmentRemoved: (Attachment) -> Unit = {},     onCancelAction: () -> Unit = {},     onLinkPreviewClick: (LinkPreview) -> Unit? = null,     onMentionSelected: (User) -> Unit = {},     onCommandSelected: (Command) -> Unit = {},     onAlsoSendToChannelSelected: (Boolean) -> Unit = {},     recordingActions: AudioRecordingActions = AudioRecordingActions.None,     headerContent: @Composable ColumnScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerHeaderContent( state = it, onCancel = onCancelAction, onLinkPreviewClick = onLinkPreviewClick, ) } },     footerContent: @Composable ColumnScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerFooterContent( state = it, onAlsoSendToChannelSelected = onAlsoSendToChannelSelected, ) } },     mentionPopupContent: @Composable (List<User>) -> Unit = { ChatTheme.componentFactory.MessageComposerMentionsPopupContent( mentionSuggestions = it, onMentionSelected = onMentionSelected, ) },     commandPopupContent: @Composable (List<Command>) -> Unit = { ChatTheme.componentFactory.MessageComposerCommandsPopupContent( commandSuggestions = it, onCommandSelected = onCommandSelected, ) },     integrations: @Composable RowScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerIntegrations( state = it, onAttachmentsClick = onAttachmentsClick, onCommandsClick = onCommandsClick, ) } },     label: @Composable (MessageComposerState) -> Unit = { ChatTheme.componentFactory.MessageComposerLabel(state = it) },     input: @Composable RowScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerInput( state = it, onInputChanged = onValueChange, onAttachmentRemoved = onAttachmentRemoved, label = label, ) } },     audioRecordingContent: @Composable RowScope.(MessageComposerState) -> Unit = { with(ChatTheme.componentFactory) { MessageComposerAudioRecordingContent( state = it, recordingActions = recordingActions, ) } },     trailingContent: @Composable (MessageComposerState) -> Unit = { ChatTheme.componentFactory.MessageComposerTrailingContent( state = it, onSendClick = onSendMessage, recordingActions = recordingActions, ) })

Clean version of the MessageComposer that doesn't rely on ViewModels, so the user can provide a manual way to handle and represent data and various operations.