diff --git a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue index e42df4c7cc1..5e77a76df34 100644 --- a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue +++ b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue @@ -731,7 +731,11 @@ export default { }, handleCopyMessageLink() { - copyConversationLinkToClipboard(this.message.token, this.message.id) + if (this.message.isThread && this.message.id !== this.message.threadId) { + copyConversationLinkToClipboard(this.message.token, this.message.id, this.message.threadId) + } else { + copyConversationLinkToClipboard(this.message.token, this.message.id) + } }, async handleMarkAsUnread() { diff --git a/src/utils/handleUrl.ts b/src/utils/handleUrl.ts index 90224a1701a..3ed5f5ab19d 100644 --- a/src/utils/handleUrl.ts +++ b/src/utils/handleUrl.ts @@ -29,8 +29,13 @@ export function generateAbsoluteUrl(url: string, params?: object, options: UrlOp * * @param token - Conversation token * @param [messageId] - messageId for message in conversation link + * @param [threadId] - threadId for message in conversation link */ -export function generateFullConversationLink(token: string, messageId?: string): string { +export function generateFullConversationLink(token: string, messageId?: string, threadId?: string): string { + if (threadId && messageId) { + return generateAbsoluteUrl('/call/{token}?threadId={threadId}#message_{messageId}', { token, messageId, threadId }) + } + return messageId !== undefined ? generateAbsoluteUrl('/call/{token}#message_{messageId}', { token, messageId }) : generateAbsoluteUrl('/call/{token}', { token }) @@ -41,11 +46,16 @@ export function generateFullConversationLink(token: string, messageId?: string): * * @param token - conversation token * @param [messageId] - messageId for message in conversation link + * @param [threadId] - threadId for message in conversation link */ -export async function copyConversationLinkToClipboard(token: string, messageId?: string) { +export async function copyConversationLinkToClipboard(token: string, messageId?: string, threadId?: string) { try { - await navigator.clipboard.writeText(generateFullConversationLink(token, messageId)) - showSuccess(t('spreed', 'Conversation link copied to clipboard')) + await navigator.clipboard.writeText(generateFullConversationLink(token, messageId, threadId)) + if (messageId) { + showSuccess(t('spreed', 'Message link copied to clipboard')) + } else { + showSuccess(t('spreed', 'Conversation link copied to clipboard')) + } } catch (error) { showError(t('spreed', 'The link could not be copied')) }