From 2d2638235c94c55f2ad6ea04c534d2824fad0c2b Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Thu, 5 Mar 2026 13:45:54 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D0=BD=D0=B3=D0=B0=20reply=20=D0=B2=20=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=BF=D0=BF=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../messenger/ui/chats/ChatDetailScreen.kt | 8 ++++++-- .../rosetta/messenger/ui/chats/ChatViewModel.kt | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt index a01d700..5c9fb76 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt @@ -535,8 +535,12 @@ fun ChatDetailScreen( timestamp = chatMsg.timestamp.time, isOutgoing = chatMsg.isOutgoing, publicKey = - if (chatMsg.isOutgoing) currentUserPublicKey - else user.publicKey, + chatMsg.senderPublicKey.ifEmpty { + if (chatMsg.isOutgoing) + currentUserPublicKey + else user.publicKey + }, + senderName = chatMsg.senderName, attachments = chatMsg.attachments ) } diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt index bbf1c84..c9db9f9 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt @@ -1902,13 +1902,19 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) { _replyMessages.value = messages.map { msg -> + val resolvedPublicKey = + msg.senderPublicKey.trim().ifEmpty { + if (msg.isOutgoing) sender else opponent + } ReplyMessage( messageId = msg.id, text = msg.text, timestamp = msg.timestamp.time, isOutgoing = msg.isOutgoing, - // Если сообщение от меня - мой publicKey, иначе - собеседника - publicKey = if (msg.isOutgoing) sender else opponent, + // В группах senderPublicKey содержит автора сообщения, а opponent = ключ группы. + // Для desktop parity в reply JSON нужен именно ключ автора. + publicKey = resolvedPublicKey, + senderName = msg.senderName, attachments = msg.attachments .filter { it.type != AttachmentType.MESSAGES } @@ -1924,12 +1930,17 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) { _replyMessages.value = messages.map { msg -> + val resolvedPublicKey = + msg.senderPublicKey.trim().ifEmpty { + if (msg.isOutgoing) sender else opponent + } ReplyMessage( messageId = msg.id, text = msg.text, timestamp = msg.timestamp.time, isOutgoing = msg.isOutgoing, - publicKey = if (msg.isOutgoing) sender else opponent, + publicKey = resolvedPublicKey, + senderName = msg.senderName, attachments = msg.attachments .filter { it.type != AttachmentType.MESSAGES }