fun MessageBubble()

in src/main/kotlin/org/jetbrains/plugins/template/chatApp/ui/MessageItem.kt [21:67]


fun MessageBubble(
    message: ChatMessage,
    modifier: Modifier = Modifier,
    isMatchingSearch: Boolean = false,
    isHighlightedInSearch: Boolean = false
) {
    val isMyMessage = message.isMyMessage
    val messageShape = RoundedCornerShape(
        topStart = 16.dp,
        topEnd = 16.dp,
        bottomStart = if (isMyMessage) 16.dp else 6.dp,
        bottomEnd = if (isMyMessage) 6.dp else 16.dp
    )
    val messageBackgroundColor = when {
        isHighlightedInSearch && isMyMessage -> ChatAppColors.MessageBubble.mySearchHighlightedBackground
        isHighlightedInSearch && !isMyMessage -> ChatAppColors.MessageBubble.othersSearchHighlightedBackground
        isMyMessage -> ChatAppColors.MessageBubble.myBackground
        else -> ChatAppColors.MessageBubble.othersBackground
    }

    Row(
        modifier = modifier
            .padding(horizontal = 12.dp, vertical = 6.dp),
        horizontalArrangement = if (isMyMessage) Arrangement.End else Arrangement.Start
    ) {
        Column(
            modifier = Modifier
                .widthIn(min = 120.dp, max = 420.dp)
                .wrapContentSize()
                .background(messageBackgroundColor, messageShape)
                .messageBorder(messageShape, isMyMessage, isHighlightedInSearch, isMatchingSearch)
                .padding(16.dp)
        ) {
            AuthorName(message)

            if (message.isTextMessage()) {
                MessageContent(message)

                TimeStampLabel(message)
            } else if (message.isAIThinkingMessage()) {
                PulsingText(message.content, isLoading = true)
            } else {
                Unit
            }
        }
    }
}