From 022e758529cf9034e2f94800c192c6961594869b Mon Sep 17 00:00:00 2001 From: Eric85710 Date: Fri, 5 Jun 2026 16:57:48 +0800 Subject: [PATCH] dm-84 --- .../Message/UI/Detail/Message_Messaging.kt | 43 ++++++++----------- .../React_Emoji_Panel.kt | 4 +- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt index 08e309a..d62ee5b 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt @@ -8,6 +8,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Arrangement @@ -287,6 +288,8 @@ fun MessageMessaging( messages = state.messages, partnerAvatarUrl = state.partnerAvatarUrl, partnerDisplayName = state.roomTitle, + activeEmojiMessageId = emojiTargetMessage?.id, // ✨ 新增短按目標 ID + activeActionMessageId = actionMessage?.id, onReplyClick = { message -> emojiTargetMessage = null viewModel.setActionMessage(message) @@ -325,6 +328,8 @@ fun MessageList( partnerAvatarUrl: Any?, partnerDisplayName: String, messages: List, + activeEmojiMessageId: String?, + activeActionMessageId: String?, onReplyClick: (Message) -> Unit, onReactionClick: (Message, String) -> Unit, onRowClick: (Message) -> Unit, @@ -343,6 +348,8 @@ fun MessageList( partnerAvatarUrl = partnerAvatarUrl, partnerDisplayName = partnerDisplayName, isMe = isMe, + // 💡 判斷:不論是正在選 Emoji 還是正在開啟動作選單,只要命中就判定為高亮 + isHighlight = message.id == activeEmojiMessageId || message.id == activeActionMessageId, currentUserId = currentUserId, onReplyClick = onReplyClick, onReactionClick = onReactionClick, @@ -359,6 +366,7 @@ fun MessageRow( isMe: Boolean, partnerAvatarUrl: Any?, partnerDisplayName: String, + isHighlight: Boolean, currentUserId: String, onReplyClick: (Message) -> Unit, onReactionClick: (Message, String) -> Unit, @@ -403,9 +411,15 @@ fun MessageRow( } } - //emoji value - var showEmojiPanel by remember { mutableStateOf(false) } - val commonEmojis = listOf("👍", "❤️", "😂", "😮", "😢", "🙏") + + + // 💡 根據是否高亮,動態決定氣泡背景色(或是你想要的邊框效果) + val bubbleColor = when { + isMe && isHighlight -> Color(0xFFB4E197) // 我發的:高亮時變成較深的草綠色 + isMe -> Color(0xFFDCF8C6) // 我發的:平常的淺綠色 + !isMe && isHighlight -> Color(0xFFCFD8DC) // 對方發的:高亮時變成較深的灰色 + else -> Color(0xFFECEFF1) // 對方發的:平常的淺灰色 + } Row( @@ -432,7 +446,7 @@ fun MessageRow( modifier = Modifier .widthIn(max = 280.dp) .background( - color = if (isMe) Color(0xFFDCF8C6) else Color(0xFFECEFF1), + color = bubbleColor, // 💡 使用動態計算的背景色 shape = RoundedCornerShape( topStart = 12.dp, topEnd = 12.dp, bottomStart = if (isMe) 12.dp else 0.dp, @@ -518,27 +532,6 @@ fun MessageRow( ) } } - - DropdownMenu( - expanded = showEmojiPanel, - onDismissRequest = { showEmojiPanel = false }, - modifier = Modifier.background(Color.White, RoundedCornerShape(24.dp)) - ) { - Row( - modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp), - horizontalArrangement = Arrangement.spacedBy(12.dp) - ) { - commonEmojis.forEach { emoji -> - Text( - text = emoji, - fontSize = 24.sp, - modifier = Modifier - .clip(CircleShape) - .padding(4.dp) - ) - } - } - } } // 💡 ✨ 新增:如果這條訊息有 Reaction,就顯示在氣泡的正下方 diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/React_Emoji_Panel.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/React_Emoji_Panel.kt index af8ae00..81df40c 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/React_Emoji_Panel.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/React_Emoji_Panel.kt @@ -113,8 +113,8 @@ fun MessageEmojiBar( Box( modifier = Modifier .fillMaxWidth() - .height(300.dp) - .padding(horizontal = 16.dp, vertical = 8.dp) + .height(340.dp) + .padding(horizontal = 6.dp, vertical = 18.dp) ){ //glass effect