From ecb28383c10233907b2cdd02e96df9b170179a8a Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 9 May 2024 18:28:40 +0530 Subject: [PATCH] refactor: move useSpecialContent to a composable --- .../components/widgets/WootWriter/Editor.vue | 65 +++++-------------- .../composables/editor/useSpecialContent.js | 61 +++++++++++++++++ 2 files changed, 78 insertions(+), 48 deletions(-) create mode 100644 app/javascript/dashboard/composables/editor/useSpecialContent.js diff --git a/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue b/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue index 25d45cc58..a8f7bd472 100644 --- a/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue +++ b/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue @@ -13,7 +13,7 @@ { + const node = editorView.state.schema.nodes.mention.create({ + userId: content.id, + userFullName: content.name, + }); + return { node, from, to }; + }; + + const getCannedResponseNode = (editorView, content, from, to, variables) => { + const updatedMessage = replaceVariablesInMessage({ + message: content, + variables: variables, + }); + + const node = new MessageMarkdownTransformer(messageSchema).parse( + updatedMessage + ); + + from = node.textContent === updatedMessage ? from : from - 1; + + return { node, from, to }; + }; + + const getVariableNode = (editorView, content, from, to) => { + const node = editorView.state.schema.text(`{{${content}}}`); + return { node, from, to }; + }; + + const getContentNode = (editorView, type, content, range, variables) => { + const methodMap = { + mention: getMentionNode, + cannedResponse: getCannedResponseNode, + variable: getVariableNode, + }; + + if (!methodMap[type]) { + return { node: null, from: range.from, to: range.to }; + } + + let { node, from, to } = methodMap[type]( + editorView, + content, + range.from, + range.to, + variables + ); + + return { node, from, to }; + }; + + return { + getContentNode, + }; +}