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 b3a4bc8..011aa51 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 @@ -186,15 +186,21 @@ fun MessageMessaging( ) }, bottomBar = { - // 👈 1. 直接將 actionMessage 作為 targetState + // 👈 直接將 actionMessage 作為 targetState AnimatedContent( targetState = actionMessage, label = "BottomBarSwitchAnimation" - ) { currentActionMessage -> // 👈 2. 這裡拿到的 currentActionMessage 在動畫期間會保持不變 + ) { currentActionMessage -> if (currentActionMessage != null) { + + // 💡 核心修正:從目前的 uiState 中安全地取出當前使用者的 ID 來做比較 + val currentUserId = (uiState as? MessagesUiState.Success)?.currentUserId + val isOwnMessage = currentActionMessage.senderId == currentUserId + // 顯示動作選單 MessageActionMenuRow( - message = currentActionMessage, // 👈 3. 乾淨安全,再也不需要寫 !! 了 + message = currentActionMessage, + isOwnMessage = isOwnMessage, // 👈 記得要把這個新參數帶進去! onCancel = { viewModel.clearActionMessage() }, onReplyClick = { msg -> viewModel.setReplyingMessage(msg) diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageActionMenuRow.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageActionMenuRow.kt index 060f178..0b6c1f9 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageActionMenuRow.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageActionMenuRow.kt @@ -42,6 +42,7 @@ fun MessageActionMenuRow( onCancel: () -> Unit, onReplyClick: (Message) -> Unit, // 👈 修正:這裡只需要定義型態 onDeleteClick: (Message) -> Unit, + isOwnMessage: Boolean, modifier: Modifier = Modifier ) { // 💡 取得系統剪貼簿,用來實作「複製文字」功能 @@ -117,13 +118,15 @@ fun MessageActionMenuRow( } ) - // 3. 刪除 - ChatMenuButton( - imageVector = Icons.Default.Delete, - label = "刪除", - tint = MaterialTheme.colorScheme.error, - onClick = { onDeleteClick(message) } - ) + // 3. 刪除:只有在自己的訊息時才顯示 👈 + if (isOwnMessage) { + ChatMenuButton( + imageVector = Icons.Default.Delete, + label = "刪除", + tint = MaterialTheme.colorScheme.error, + onClick = { onDeleteClick(message) } + ) + } } // 為了讓中間的按鈕群置中,右邊放一個等寬的 Spacer