Package-level declarations

Types

Link copied to clipboard

Represents the state of the message menu dialog for specific message.

Link copied to clipboard

Represents the state of the ChannelTopBar.

Link copied to clipboard
class ChannelViewModel(repository: ChannelScreenResourceRepository, savedStateHandle: SavedStateHandle) : ViewModel, SendbirdViewModelContract

ViewModel class for ChannelScreen.

Link copied to clipboard
class ChannelViewModelParams(val channelUrl: String, val messageListParams: MessageListParams) : SendbirdViewModelParams

Channel view model params.

Link copied to clipboard
sealed class MessageInputMode

Represents the mode of the message input.

Link copied to clipboard

Represents the state of the message input.

Functions

Link copied to clipboard
fun AdminMessageItem(message: UikitAdminMessage, modifier: Modifier = Modifier)

A Composable to display the UikitAdminMessage item.

Link copied to clipboard
fun ChannelScreen(navController: NavController?, channelUrl: String, modifier: Modifier = Modifier, onTopBarNavigationIconClick: () -> Unit = { navController?.popBackStack() }, onTopBarActionClick: () -> Unit = { navController?.navigateToChannelSettings(channelUrl) }, onMessageItemClick: (Context, UikitBaseMessage, ImageViewerState) -> Unit = { context, message, state -> when (message) { is UikitFileMessage -> { if (message.isImage) { state.showImage(message) } else if (message.isFile or message.isVideo) { val type = message.type.lowercase() val uri = Uri.parse(message.url) val intent = uri.getViewerIntent(type) context.startActivity(intent) } else { Logger.d("unknown file type: ${message.type}") } } else -> {} } }, onMessageItemLongClick: (UikitBaseMessage, ChannelDialogState) -> Unit = { message, state -> state.showMessageMenuDialog(message) }, onChannelRemoved: (String) -> Unit = { navController?.popBackStack() }, messageInputState: MessageInputState = rememberMessageInputState(), dialogState: ChannelDialogState = rememberChannelDialogState(), imageViewerState: ImageViewerState = rememberImageViewerState(), viewModel: ChannelViewModel = viewModel( factory = ChannelViewModel.factory( ChannelViewModelParams( channelUrl = channelUrl, messageListParams = MessageListParams() ) ) ), topBar: @Composable (state: ChannelTopBarState) -> Unit = { ChannelTopBar( channelCoverModels = it.coverModels, channelTitle = it.title, channelDescription = it.channelDescription, onNavigationIconClick = it.onNavigationIconClick, onActionClick = it.onActionClick ) }, loading: @Composable () -> Unit = {}, failure: @Composable (e: Throwable) -> Unit = { e -> if (e !is ChannelRemovedException) { FailurePlaceholder( onRetryClick = { viewModel.prepare() } ) } }, empty: @Composable () -> Unit = { ScreenPlaceholder( icon = painterResource(id = R.drawable.icon_message), text = stringResource(id = R.string.sb_text_channel_message_empty) ) }, messageItem: @Composable (message: UikitBaseMessage, onMessageClick: (UikitBaseMessage) -> Unit, onMessageLongClick: (UikitBaseMessage) -> Unit) -> Unit = { message, onMessageClick, onMessageLongClick -> MessageItemFactory( message, modifier = Modifier .fillMaxWidth() .padding(vertical = 8.dp), onMessageClick = { dialogState.dismissMessageMenuDialog() onMessageClick(it) }, onMessageLongClick = onMessageLongClick ) }, messageInput: @Composable (messageInputState: MessageInputState) -> Unit = { state -> MessageInput( inputValue = state.inputText, onInputValueChange = { state.inputText = it }, modifier = Modifier .padding(12.dp) .focusRequester(state.focusRequester), onActionClick = { if (state.inputText.isBlank()) return@MessageInput viewModel.sendUserMessage(state.inputText) state.clear() }, onEditModeSaveClick = { messageId -> viewModel.updateUserMessage(messageId, state.inputText) state.clear() }, onEditModeCancelClick = { state.clear() }, messageInputMode = state.inputMode, onMenuClick = { state.showBottomSheet() } ) })

Represents the screen for showing a messages in a UikitGroupChannel.

Link copied to clipboard
fun ChannelTopBar(modifier: Modifier = Modifier, channelCoverModels: List<ImageModel> = listOf(), channelTitle: String = "", channelDescription: String = "", onNavigationIconClick: () -> Unit = {}, onActionClick: () -> Unit = {}, title: @Composable () -> Unit = { ChannelTopBarTitle( coverModels = channelCoverModels, title = channelTitle, description = channelDescription, modifier = Modifier.padding(horizontal = 8.dp) ) }, navigationIcon: @Composable () -> Unit = { BackButton(onClick = onNavigationIconClick) }, action: @Composable () -> Unit = { SendbirdIconButton( icon = painterResource(id = R.drawable.icon_info), contentDescription = stringResource(id = R.string.sb_view_header_right_button_description), modifier = Modifier.size(32.dp), onClick = onActionClick ) })

The top bar for the ChannelScreen.

Link copied to clipboard
fun MessageInput(inputValue: String, onInputValueChange: (String) -> Unit, modifier: Modifier = Modifier, messageInputMode: MessageInputMode = MessageInputMode.Default, isActionButtonShown: Boolean = true, enabled: Boolean = true, onEditModeSaveClick: (messageId: Long) -> Unit = {}, onEditModeCancelClick: () -> Unit = {}, onMenuClick: () -> Unit = {}, onActionClick: () -> Unit = {})

Represents the message input component.

Link copied to clipboard
fun MessageItemFactory(message: UikitBaseMessage, modifier: Modifier = Modifier, contentAlignment: Alignment = when (message) { is UikitTimelineMessage, is UikitAdminMessage -> { Alignment.Center } else -> { if (message.isMine) { Alignment.CenterEnd } else { Alignment.CenterStart } } }, onMessageClick: (UikitBaseMessage) -> Unit = {}, onMessageLongClick: (UikitBaseMessage) -> Unit = {}, myTextMessageItem: @Composable (message: UikitUserMessage) -> Unit = { MyTextMessageItem( message = it, onMessageClick = onMessageClick, onMessageLongClick = onMessageLongClick ) }, myFileMessageItem: @Composable (message: UikitFileMessage) -> Unit = { MyFileMessageItem( message = it, onMessageClick = onMessageClick, onMessageLongClick = onMessageLongClick ) }, myMediaMessageItem: @Composable (message: UikitFileMessage) -> Unit = { MyMediaMessageItem( message = it, onMessageClick = onMessageClick, onMessageLongClick = onMessageLongClick ) }, myUnknownMessageItem: @Composable (message: UikitBaseMessage) -> Unit = { MyUnknownMessageItem( message = it, onMessageClick = onMessageClick, onMessageLongClick = onMessageLongClick ) }, otherTextMessageItem: @Composable (message: UikitUserMessage) -> Unit = { OtherTextMessageItem( message = it, onMessageClick = onMessageClick, onMessageLongClick = onMessageLongClick ) }, otherFileMessageItem: @Composable (message: UikitFileMessage) -> Unit = { OtherFileMessageItem( message = it, onMessageClick = onMessageClick, onMessageLongClick = onMessageLongClick ) }, otherMediaMessageItem: @Composable (message: UikitFileMessage) -> Unit = { OtherMediaMessageItem( message = it, onMessageClick = onMessageClick, onMessageLongClick = onMessageLongClick ) }, otherUnknownMessageItem: @Composable (message: UikitBaseMessage) -> Unit = { OtherUnknownMessageItem( message = it, onMessageClick = onMessageClick, onMessageLongClick = onMessageLongClick ) }, adminMessageItem: @Composable (message: UikitAdminMessage) -> Unit = { AdminMessageItem(message = it) }, timelineMessageItem: @Composable (message: UikitTimelineMessage) -> Unit = { TimelineMessageItem(message = it) })

A factory Composable to create a message item based on the message type.

Link copied to clipboard
fun MyFileMessageItem(message: UikitFileMessage, modifier: Modifier = Modifier, onMessageClick: (UikitFileMessage) -> Unit = {}, onMessageLongClick: (UikitFileMessage) -> Unit = {})

A Composable to display the current user's UikitFileMessage item other than images or videos using the MyMessageItem.

Link copied to clipboard
fun MyMediaMessageItem(message: UikitFileMessage, modifier: Modifier = Modifier, onMessageClick: (UikitFileMessage) -> Unit = {}, onMessageLongClick: (UikitFileMessage) -> Unit = {})

A Composable to display the current user's UikitFileMessage item, which are image or videos, using the MyMessageItem.

Link copied to clipboard
fun MyMessageItem(message: UikitBaseMessage, modifier: Modifier = Modifier, content: @Composable (UikitBaseMessage) -> Unit)

A Composable to display the current user's message item. This is a base Composable with common Composables, such as UikitBaseMessage.sendingStatus and UikitBaseMessage.sentAt with content slot open to be used in customizing for each type of messages.

Link copied to clipboard
fun MyTextMessageItem(message: UikitUserMessage, modifier: Modifier = Modifier, onMessageClick: (UikitUserMessage) -> Unit = {}, onMessageLongClick: (UikitUserMessage) -> Unit = {})

A Composable to display the current user's UikitUserMessage item using the MyMessageItem.

Link copied to clipboard
fun MyUnknownMessageItem(message: UikitBaseMessage, modifier: Modifier = Modifier, onMessageClick: (UikitBaseMessage) -> Unit = {}, onMessageLongClick: (UikitBaseMessage) -> Unit = {})

A Composable to display the current user's unknown type of message using the MyMessageItem.

Link copied to clipboard
fun OtherFileMessageItem(message: UikitFileMessage, modifier: Modifier = Modifier, onMessageClick: (UikitFileMessage) -> Unit = {}, onMessageLongClick: (UikitFileMessage) -> Unit = {})

A Composable to display the other user's UikitFileMessage item other than images or videos using the OtherMessageItem.

Link copied to clipboard
fun OtherMediaMessageItem(message: UikitFileMessage, modifier: Modifier = Modifier, onMessageClick: (UikitFileMessage) -> Unit = {}, onMessageLongClick: (UikitFileMessage) -> Unit = {})

A Composable to display the other user's UikitFileMessage item, which are image or videos, using the OtherMessageItem.

Link copied to clipboard
fun OtherMessageItem(message: UikitBaseMessage, modifier: Modifier = Modifier, content: @Composable (UikitBaseMessage) -> Unit)

A Composable to display the other user's message item. This is a base Composable with common Composables, such as other user's profile image using AsyncImage and UikitBaseMessage.sentAt with content slot open to be used in customizing for each type of messages.

Link copied to clipboard
fun OtherTextMessageItem(message: UikitUserMessage, modifier: Modifier = Modifier, onMessageClick: (UikitUserMessage) -> Unit = {}, onMessageLongClick: (UikitUserMessage) -> Unit = {})

A Composable to display the other user's UikitUserMessage item using the OtherMessageItem.

Link copied to clipboard
fun OtherUnknownMessageItem(message: UikitBaseMessage, modifier: Modifier = Modifier, onMessageClick: (UikitBaseMessage) -> Unit = {}, onMessageLongClick: (UikitBaseMessage) -> Unit = {})

A Composable to display the other user's unknown type of message using the OtherMessageItem.

Link copied to clipboard

Creates a ChannelDialogState that can be remembered across compositions.

Link copied to clipboard
fun rememberChannelTopBarState(coverModels: List<ImageModel>, title: String, onNavigationClick: () -> Unit, onActionClick: () -> Unit, contentDescription: String): ChannelTopBarState

Creates a ChannelTopBarState that can be remembered across compositions.

Link copied to clipboard

Creates a MessageInputState that can be remembered across compositions.

Link copied to clipboard
fun SendingStatus(unreadMemberCount: Int, undeliveredMemberCount: Int, sendingStatus: SendingStatus, modifier: Modifier = Modifier)

A Composable to display the unread/undelivered member counts with the sending status of the message.

Link copied to clipboard
fun TimelineMessageItem(message: UikitTimelineMessage, modifier: Modifier = Modifier)

A Composable to display the UikitTimelineMessage item.