From 7cbbcb79d81e691a019099751d5e3f1f0221b417 Mon Sep 17 00:00:00 2001 From: Chris Bobbe Date: Tue, 25 Apr 2023 12:13:50 -0700 Subject: [PATCH] =?UTF-8?q?compose:=20Use=20new=20/dm/=E2=80=A6=20link=20f?= =?UTF-8?q?ormat=20in=20quote-and-reply,=20for=20recent=20servers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: #5710 --- src/compose/ComposeBox.js | 6 ++++-- src/utils/internalLinks.js | 15 +++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/compose/ComposeBox.js b/src/compose/ComposeBox.js index da6d86014c..70fa0dcd1b 100644 --- a/src/compose/ComposeBox.js +++ b/src/compose/ComposeBox.js @@ -138,6 +138,7 @@ function getQuoteAndReplyText(args: {| user: UserOrBot, realm: URL, streamsById: Map, + zulipFeatureLevel: number, _: GetText, |}): string { // Modeled on replace_content in static/js/compose_actions.js in the @@ -150,13 +151,13 @@ function getQuoteAndReplyText(args: {| // message content // ``` - const { message, rawContent, user, realm, streamsById, _ } = args; + const { message, rawContent, user, realm, streamsById, zulipFeatureLevel, _ } = args; const authorLine = _({ // Matches the web-app string text: '{username} [said]({link_to_message}):', values: { username: `@_**${user.full_name}|${user.user_id}**`, - link_to_message: getMessageUrl(realm, message, streamsById).toString(), + link_to_message: getMessageUrl(realm, message, streamsById, zulipFeatureLevel).toString(), }, }); const fence = fenced_code.get_unused_fence(rawContent); @@ -439,6 +440,7 @@ const ComposeBox: React$AbstractComponent = forwardRef( user, realm: auth.realm, streamsById, + zulipFeatureLevel, _, }); setMessageInputValue(state => state.value.replace(quotingPlaceholder, quoteAndReplyText)); diff --git a/src/utils/internalLinks.js b/src/utils/internalLinks.js index d57dad22d5..539baae7a0 100644 --- a/src/utils/internalLinks.js +++ b/src/utils/internalLinks.js @@ -256,13 +256,19 @@ export const getStreamUrl = ( */ // Based on pm_perma_link in static/js/people.js in the zulip/zulip repo. // TODO(shared): Share that code. -export const getPmConversationLinkForMessage = (realm: URL, message: PmMessage | PmOutbox): URL => { +export const getPmConversationLinkForMessage = ( + realm: URL, + message: PmMessage | PmOutbox, + zulipFeatureLevel: number, +): URL => { const recipientIds = recipientsOfPrivateMessage(message) .map(r => r.id) .sort((a, b) => a - b); - const suffix = recipientIds.length >= 3 ? 'group' : 'pm'; + const suffix = recipientIds.length >= 3 ? 'group' : zulipFeatureLevel >= 177 ? 'dm' : 'pm'; const slug = `${recipientIds.join(',')}-${suffix}`; - return new URL(`#narrow/pm-with/${slug}`, realm); + // TODO(server-7.0): Remove FL 177 condition (here and on `suffix`) + const operator = zulipFeatureLevel >= 177 ? 'dm' : 'pm-with'; + return new URL(`#narrow/${operator}/${slug}`, realm); }; /** @@ -272,6 +278,7 @@ export const getMessageUrl = ( realm: URL, message: Message | Outbox, streamsById: Map, + zulipFeatureLevel: number, ): URL => { let result = undefined; @@ -279,7 +286,7 @@ export const getMessageUrl = ( if (message.type === 'stream') { result = getStreamTopicUrl(realm, message.stream_id, message.subject, streamsById); } else { - result = getPmConversationLinkForMessage(realm, message); + result = getPmConversationLinkForMessage(realm, message, zulipFeatureLevel); } // …then add the part that points to the message.