From 400b2bde870d38fa0463b5f123553bde0c989320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D9=83=D8=A7=D8=B1=D9=84=20=D9=85=D8=A8=D8=A7=D8=B1=D9=83?= Date: Fri, 2 Jul 2021 17:25:44 +0200 Subject: [PATCH] fixed messaage reply not regexing properlly if contenttype == hmll --- front/src/api/zulip/index.js | 2 +- front/src/components/Content/Message.vue | 4 -- front/src/store/index.js | 52 +++++++++++++++++++----- 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/front/src/api/zulip/index.js b/front/src/api/zulip/index.js index 26872f3..291e31d 100644 --- a/front/src/api/zulip/index.js +++ b/front/src/api/zulip/index.js @@ -33,7 +33,7 @@ const anchor: "newest", num_before: 100, num_after: 0, - apply_markdown: false, + // apply_markdown: false, narrow: [ { operator: "stream", operand: stream }, { operator: "topic", operand: topic }, diff --git a/front/src/components/Content/Message.vue b/front/src/components/Content/Message.vue index c026029..b7016db 100644 --- a/front/src/components/Content/Message.vue +++ b/front/src/components/Content/Message.vue @@ -47,8 +47,4 @@ export default { \ No newline at end of file diff --git a/front/src/store/index.js b/front/src/store/index.js index 526790e..7e7293d 100644 --- a/front/src/store/index.js +++ b/front/src/store/index.js @@ -35,6 +35,41 @@ let validateRule = (rule) => { return rule.match(/.+:.+;/gm); } +// parsing replies, there are two scenarios: +// we are either getting the message as plain markdown +// or we are getting the message pre-rendered as HTML (default Zulip behaviour) +// see /src/api/zulip/index.js line 36 + +const handleMDReply = message => { + message.responseTo = { + id: message.content + .replace(/.*\/near\//gm, '') + .replace(/\):.*[^]+/gm, ''), + sender_id: message.content + .replace(/@_\*\*.*\|/gm, '') + .replace(/\*\*.\[said\].*[^]+/gm, ''), + quote: message.content + .replace(/[^]+.*```quote\n/gm, '') + .replace(/ \n```/gm, '') + } + // console.log(message.responseTo) +} + +const handleHTMLReply = message => { + message.responseTo = { + id: message.content + .replace(/.*\/near\//gm, '') + .replace(/".*[^]+/gm, ''), + sender_id: message.content + .replace(/[^]+data-user-id="/gm, '') + .replace(/">[^]+/gm, ''), + quote: message.content + .replace(/.*[^]+<\/p>\n
\n

/gm, '') + .replace(/ <\/p>\n<\/blockquote>/gm, '') + } + // console.log(message.responseTo) +} + export default createStore({ strict: process.env.NODE_ENV !== 'production', @@ -55,17 +90,12 @@ export default createStore({ addMessage: (state, message) => { if (message.content.startsWith('@_**')) { - message.responseTo = { - id: message.content - .replace(/.*\/near\//gm, '') - .replace(/\):.*[^]+/gm, ''), - sender_id: message.content - .replace(/@_\*\*.*\|/gm, '') - .replace(/\*\*.\[said\].*[^]+/gm, ''), - quote: message.content - .replace(/[^]+.*```quote\n/gm, '') - .replace(/ \n```/gm, '') - } + handleMDReply(message) + } else if ( + message.content.includes('user-mention') && + message.content.includes('blockquote') + ) { + handleHTMLReply(message) } state.contents.push(message) },