From 3152eeb13983ed93f4c94a6186fccf11206df103 Mon Sep 17 00:00:00 2001 From: Taksh Date: Fri, 31 Jul 2026 11:44:54 +0300 Subject: [PATCH] feat: add quote-in-composer beside copy on message context menu Keeps an existing draft and inserts a sender-attributed quote block so replies can reference nearby chat without retyping. --- bitchat/Views/MessageListView.swift | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/bitchat/Views/MessageListView.swift b/bitchat/Views/MessageListView.swift index 6e1c6b95..3226335c 100644 --- a/bitchat/Views/MessageListView.swift +++ b/bitchat/Views/MessageListView.swift @@ -143,13 +143,23 @@ struct MessageListView: View { } } Button("content.message.copy") { - #if os(iOS) - UIPasteboard.general.string = message.content - #else - let pb = NSPasteboard.general - pb.clearContents() - pb.setString(message.content, forType: .string) - #endif + MessageClipboard.copyPlaintext(message.content) + } + if !message.content.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty, + message.sender != "system" { + Button { + messageText = MessageClipboard.appendQuote( + to: messageText, + content: message.content, + sender: message.sender + ) + } label: { + Text(String( + localized: "content.message.quote", + defaultValue: "quote in composer", + comment: "Context menu action that inserts a quoted copy of the message into the composer draft" + )) + } } if isResendableFailedMessage(message) { Button("content.actions.resend") {