Package-level declarations

Functions

Link copied to clipboard
fun MessageComposer(viewModel: MessageComposerViewModel, modifier: Modifier = Modifier, isAttachmentPickerVisible: Boolean = false, onSendMessage: (Message) -> Unit = { viewModel.sendMessage(it) }, onAttachmentsClick: () -> Unit = {}, onValueChange: (String) -> Unit = { viewModel.setMessageInput(it) }, onAttachmentRemoved: (Attachment) -> Unit = { viewModel.removeAttachment(it) }, onCancelAction: () -> Unit = { viewModel.dismissMessageActions() }, onLinkPreviewClick: (LinkPreview) -> Unit? = null, onCancelLinkPreviewClick: () -> Unit? = { viewModel.cancelLinkPreview() }, onUserSelected: (User) -> Unit = { viewModel.selectMention(it) }, onCommandSelected: (Command) -> Unit = { viewModel.selectCommand(it) }, onAlsoSendToChannelChange: (Boolean) -> Unit = viewModel::setAlsoSendToChannel, onActiveCommandDismiss: () -> Unit = viewModel::clearActiveCommand, recordingActions: AudioRecordingActions = AudioRecordingActions.defaultActions( viewModel = viewModel, sendOnComplete = ChatTheme.config.composer.audioRecordingSendOnComplete, ), input: @Composable RowScope.(MessageComposerState) -> Unit = { state -> val inputFocusRequester = remember { FocusRequester() } LaunchedEffect(Unit) { viewModel.inputFocusEvents.collect { inputFocusRequester.requestFocus() } } ChatTheme.componentFactory.MessageComposerInput( params = MessageComposerInputParams( modifier = Modifier .weight(1f) .focusRequester(inputFocusRequester), state = state, onInputChanged = onValueChange, onAttachmentRemoved = onAttachmentRemoved, onLinkPreviewClick = onLinkPreviewClick, onCancelLinkPreviewClick = onCancelLinkPreviewClick, onCancel = onCancelAction, onSendClick = { input, attachments -> val message = viewModel.buildNewMessage(input, attachments) onSendMessage(message) }, onAlsoSendToChannelChange = onAlsoSendToChannelChange, recordingActions = recordingActions, onActiveCommandDismiss = onActiveCommandDismiss, ), ) })

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, isAttachmentPickerVisible: Boolean = false, onAttachmentsClick: () -> Unit = {}, onValueChange: (String) -> Unit = {}, onAttachmentRemoved: (Attachment) -> Unit = {}, onCancelAction: () -> Unit = {}, onLinkPreviewClick: (LinkPreview) -> Unit? = null, onCancelLinkPreviewClick: () -> Unit? = null, onUserSelected: (User) -> Unit = {}, onCommandSelected: (Command) -> Unit = {}, onAlsoSendToChannelChange: (Boolean) -> Unit = {}, onActiveCommandDismiss: () -> Unit = {}, recordingActions: AudioRecordingActions = AudioRecordingActions.None, input: @Composable RowScope.(MessageComposerState) -> Unit = { state -> ChatTheme.componentFactory.MessageComposerInput( params = MessageComposerInputParams( modifier = Modifier.weight(1f), state = state, onInputChanged = onValueChange, onAttachmentRemoved = onAttachmentRemoved, onCancel = onCancelAction, onLinkPreviewClick = onLinkPreviewClick, onCancelLinkPreviewClick = onCancelLinkPreviewClick, onSendClick = onSendMessage, onAlsoSendToChannelChange = onAlsoSendToChannelChange, recordingActions = recordingActions, onActiveCommandDismiss = onActiveCommandDismiss, ), ) })

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.