From 20cf8b59f8ae6c8ab671d6de08f4dd34817d776b Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 13 Jul 2025 23:42:58 +0200 Subject: [PATCH] copy text and fix notifications for DM --- .../bitchat/android/ui/MeshDelegateHandler.kt | 16 ++++++------ .../bitchat/android/ui/MessageComponents.kt | 25 +++++++++++-------- .../bitchat/android/ui/NotificationManager.kt | 2 +- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/ui/MeshDelegateHandler.kt b/app/src/main/java/com/bitchat/android/ui/MeshDelegateHandler.kt index d8e8503a..ce37c477 100644 --- a/app/src/main/java/com/bitchat/android/ui/MeshDelegateHandler.kt +++ b/app/src/main/java/com/bitchat/android/ui/MeshDelegateHandler.kt @@ -49,15 +49,13 @@ class MeshDelegateHandler( // Show notification with enhanced information - now includes senderPeerID message.senderPeerID?.let { senderPeerID -> - if (state.getSelectedPrivateChatPeerValue() != senderPeerID) { - // Use nickname if available, fall back to sender or senderPeerID - val senderNickname = message.sender.takeIf { it != senderPeerID } ?: senderPeerID - notificationManager.showPrivateMessageNotification( - senderPeerID = senderPeerID, - senderNickname = senderNickname, - messageContent = message.content - ) - } + // Use nickname if available, fall back to sender or senderPeerID + val senderNickname = message.sender.takeIf { it != senderPeerID } ?: senderPeerID + notificationManager.showPrivateMessageNotification( + senderPeerID = senderPeerID, + senderNickname = senderNickname, + messageContent = message.content + ) } } else if (message.channel != null) { // Channel message diff --git a/app/src/main/java/com/bitchat/android/ui/MessageComponents.kt b/app/src/main/java/com/bitchat/android/ui/MessageComponents.kt index f032182f..ba97657f 100644 --- a/app/src/main/java/com/bitchat/android/ui/MessageComponents.kt +++ b/app/src/main/java/com/bitchat/android/ui/MessageComponents.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment @@ -41,17 +42,19 @@ fun MessagesList( } } - LazyColumn( - state = listState, - modifier = modifier.padding(horizontal = 12.dp, vertical = 8.dp), - verticalArrangement = Arrangement.spacedBy(2.dp) - ) { - items(messages) { message -> - MessageItem( - message = message, - currentUserNickname = currentUserNickname, - meshService = meshService - ) + SelectionContainer { + LazyColumn( + state = listState, + modifier = modifier.padding(horizontal = 12.dp, vertical = 8.dp), + verticalArrangement = Arrangement.spacedBy(2.dp) + ) { + items(messages) { message -> + MessageItem( + message = message, + currentUserNickname = currentUserNickname, + meshService = meshService + ) + } } } } diff --git a/app/src/main/java/com/bitchat/android/ui/NotificationManager.kt b/app/src/main/java/com/bitchat/android/ui/NotificationManager.kt index ce7e1e8a..265ea48c 100644 --- a/app/src/main/java/com/bitchat/android/ui/NotificationManager.kt +++ b/app/src/main/java/com/bitchat/android/ui/NotificationManager.kt @@ -96,7 +96,7 @@ class NotificationManager(private val context: Context) { */ fun showPrivateMessageNotification(senderPeerID: String, senderNickname: String, messageContent: String) { // Only show notifications if app is in background OR user is not viewing this specific chat - val shouldNotify = isAppInBackground || currentPrivateChatPeer != senderPeerID + val shouldNotify = isAppInBackground || (!isAppInBackground && currentPrivateChatPeer != senderPeerID) if (!shouldNotify) { Log.d(TAG, "Skipping notification - app in foreground and viewing chat with $senderNickname")