From 041980847933587a3bd914e5aff939f193a6f39b Mon Sep 17 00:00:00 2001 From: Prajan53 Date: Sat, 14 Jun 2025 09:50:12 +0530 Subject: [PATCH] feat:addition of copy link in the context menu -Added a new menu item know as copy message link -Used a handler to extract the link and to write it to clipboard. -Based on the issue #597 --- .../message-content/MessageContextMenu.tsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ts/components/conversation/message/message-content/MessageContextMenu.tsx b/ts/components/conversation/message/message-content/MessageContextMenu.tsx index 015a8c1c6e..2d0439cce1 100644 --- a/ts/components/conversation/message/message-content/MessageContextMenu.tsx +++ b/ts/components/conversation/message/message-content/MessageContextMenu.tsx @@ -225,6 +225,20 @@ export const MessageContextMenu = (props: Props) => { MessageInteraction.copyBodyToClipboard(text); }, [text]); + const copyLinkFromMessage = useCallback(() => { + const linkMatch = text?.match(/https?:\/\/[^\s]+/); + const firstLink = linkMatch?.[0]; + + if (firstLink) { + navigator.clipboard.writeText(firstLink).then(() => { + window.log.info('Link copied to clipboard'); + }); + } else { + window.log.warn('No link found in message'); + } +}, [text]); + + const onSelect = useCallback(() => { dispatch(toggleSelectedMessageId(messageId)); }, [dispatch, messageId]); @@ -331,6 +345,7 @@ export const MessageContextMenu = (props: Props) => { ) : null} {window.i18n('copy')} + {window.i18n('copyMessageLink') ?? 'Copy link in message'} { void showMessageInfoOverlay({ messageId, dispatch });