diff options
author | Raimund Schlüßler <raimund.schluessler@mailbox.org> | 2022-05-12 22:58:23 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-12 22:58:23 +0300 |
commit | 9f3df6ef962495d7406f266b48ae8fb3302802f3 (patch) | |
tree | bdaac2680f690e12759e32de3db4c25a4cd0a4f0 /src | |
parent | 6bb83ec7c31ccf7cdc08f87b2f802e9b7ac3a78c (diff) |
Fix talk integration (#1999)
Signed-off-by: Raimund Schlüßler <raimund.schluessler@mailbox.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/talk.js | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/talk.js b/src/talk.js index cc3e4dc8..16b7daad 100644 --- a/src/talk.js +++ b/src/talk.js @@ -57,13 +57,32 @@ window.addEventListener('DOMContentLoaded', () => { window.OCA.Talk.registerMessageAction({ label: t('tasks', 'Create a task'), icon: 'icon-tasks', - async callback({ message: { message, actorDisplayName }, metadata: { name: conversationName, token: conversationToken } }) { - const shortenedMessageCandidate = message.replace(/^(.{255}[^\s]*).*/, '$1') - const shortenedMessage = shortenedMessageCandidate === '' ? message.slice(0, 255) : shortenedMessageCandidate + async callback({ message: { message, messageParameters, actorDisplayName }, metadata: { name: conversationName, token: conversationToken } }) { + const parsedMessage = message.replace(/{[a-z0-9-_]+}/gi, function(parameter) { + const parameterName = parameter.substr(1, parameter.length - 2) + + if (messageParameters[parameterName]) { + if (messageParameters[parameterName].type === 'file' && messageParameters[parameterName].path) { + return messageParameters[parameterName].path + } + if (messageParameters[parameterName].type === 'user' || messageParameters[parameterName].type === 'call') { + return '@' + messageParameters[parameterName].name + } + if (messageParameters[parameterName].name) { + return messageParameters[parameterName].name + } + } + + // Do not replace so insert with curly braces again + return parameter + }) + + const shortenedMessageCandidate = parsedMessage.replace(/^(.{255}[^\s]*).*/, '$1') + const shortenedMessage = shortenedMessageCandidate === '' ? parsedMessage.substr(0, 255) : shortenedMessageCandidate try { await buildSelector(TaskCreateDialog, { title: shortenedMessage, - description: message + '\n\n' + '[' + description: parsedMessage + '\n\n' + '[' + t('tasks', 'Message from {author} in {conversationName}', { author: actorDisplayName, conversationName }) + '](' + generateUrl('/call/' + conversationToken) + ')', }) |