Merge pull request #3741 from nextcloud/backport/stable23/3683
[stable23] Fix paramter replacements when creating deck cards from talk messages
This commit is contained in:
@@ -44,14 +44,33 @@ window.addEventListener('DOMContentLoaded', () => {
|
|||||||
window.OCA.Talk.registerMessageAction({
|
window.OCA.Talk.registerMessageAction({
|
||||||
label: t('deck', 'Create a card'),
|
label: t('deck', 'Create a card'),
|
||||||
icon: 'icon-deck',
|
icon: 'icon-deck',
|
||||||
async callback({ message: { message, actorDisplayName }, metadata: { name: conversationName, token: conversationToken } }) {
|
async callback({ message: { message, messageParameters, actorDisplayName }, metadata: { name: conversationName, token: conversationToken } }) {
|
||||||
const shortenedMessageCandidate = message.replace(/^(.{255}[^\s]*).*/, '$1')
|
const parsedMessage = message.replace(/{[a-z0-9-_]+}/gi, function(parameter) {
|
||||||
const shortenedMessage = shortenedMessageCandidate === '' ? message.substr(0, 255) : shortenedMessageCandidate
|
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 {
|
try {
|
||||||
await buildSelector(CardCreateDialog, {
|
await buildSelector(CardCreateDialog, {
|
||||||
props: {
|
props: {
|
||||||
title: shortenedMessage,
|
title: shortenedMessage,
|
||||||
description: message + '\n\n' + '['
|
description: parsedMessage + '\n\n' + '['
|
||||||
+ t('deck', 'Message from {author} in {conversationName}', {
|
+ t('deck', 'Message from {author} in {conversationName}', {
|
||||||
author: actorDisplayName,
|
author: actorDisplayName,
|
||||||
conversationName,
|
conversationName,
|
||||||
|
|||||||
Reference in New Issue
Block a user