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
}
}
}
}