From 0d6175d6b3314675a04b529583053af89187f0ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Thom=C3=A9?= <38537062+g-thome@users.noreply.github.com> Date: Sat, 21 Nov 2020 01:16:55 -0300 Subject: [PATCH] [FIX] Outgoing integrations without trigger words or with multiple commas (#19488) Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz> Co-authored-by: Diego Sampaio <chinello@gmail.com> --- .../admin/integrations/edit/EditOutgoingWebhook.js | 6 ++++-- client/admin/integrations/helpers/triggerWords.ts | 13 +++++++++++++ client/admin/integrations/new/NewOutgoingWebhook.js | 5 ++++- package-lock.json | 7 +++++++ 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 client/admin/integrations/helpers/triggerWords.ts diff --git a/client/admin/integrations/edit/EditOutgoingWebhook.js b/client/admin/integrations/edit/EditOutgoingWebhook.js index 173470a19aa..bf8f18cf796 100644 --- a/client/admin/integrations/edit/EditOutgoingWebhook.js +++ b/client/admin/integrations/edit/EditOutgoingWebhook.js @@ -18,6 +18,8 @@ import OutgoingWebhookForm from '../OutgoiongWebhookForm'; import { useForm } from '../../../hooks/useForm'; import DeleteSuccessModal from '../../../components/DeleteSuccessModal'; import DeleteWarningModal from '../../../components/DeleteWarningModal'; +import { triggerWordsToArray, triggerWordsToString } from '../helpers/triggerWords'; + export default function EditOutgoingWebhookWithData({ integrationId, ...props }) { const t = useTranslation(); @@ -54,7 +56,7 @@ const getInitialValue = (data) => { event: data.event, token: data.token, urls: data.urls.join('\n') ?? '', - triggerWords: data.triggerWords?.join('; ') ?? '', + triggerWords: triggerWordsToString(data.triggerWords), targetRoom: data.targetRoom ?? '', channel: data.channel.join(', ') ?? '', username: data.username ?? '', @@ -115,7 +117,7 @@ function EditOutgoingWebhook({ data, onChange, setSaveAction, ...props }) { try { await saveIntegration(data._id, { ...formValues, - triggerWords: triggerWords.split(/\s*(?:;|$)\s*/), + triggerWords: triggerWordsToArray(triggerWords), urls: urls.split('\n'), }); diff --git a/client/admin/integrations/helpers/triggerWords.ts b/client/admin/integrations/helpers/triggerWords.ts new file mode 100644 index 00000000000..4aa2bb1a777 --- /dev/null +++ b/client/admin/integrations/helpers/triggerWords.ts @@ -0,0 +1,13 @@ +const separator = ','; + +export function triggerWordsToArray(s?: string): Array<string> { + if (typeof s !== 'string' || s.length === 0) { + return []; + } + + return s.split(separator); +} + +export function triggerWordsToString(triggerWords?: Array<string>): string { + return triggerWords?.join(separator) ?? ''; +} diff --git a/client/admin/integrations/new/NewOutgoingWebhook.js b/client/admin/integrations/new/NewOutgoingWebhook.js index 6e5569b58f2..fcad3909cef 100644 --- a/client/admin/integrations/new/NewOutgoingWebhook.js +++ b/client/admin/integrations/new/NewOutgoingWebhook.js @@ -7,6 +7,7 @@ import { useEndpointAction } from '../../../hooks/useEndpointAction'; import { useRoute } from '../../../contexts/RouterContext'; import { useForm } from '../../../hooks/useForm'; import OutgoingWebhookForm from '../OutgoiongWebhookForm'; +import { triggerWordsToArray } from '../helpers/triggerWords'; const defaultData = { type: 'webhook-outgoing', @@ -31,6 +32,7 @@ const defaultData = { runOnEdits: true, }; + export default function NewOutgoingWebhook({ data = defaultData, onChange, setSaveAction, ...props }) { const t = useTranslation(); const router = useRoute('admin-integrations'); @@ -42,10 +44,11 @@ export default function NewOutgoingWebhook({ data = defaultData, onChange, setSa triggerWords, } = formValues; + const params = useMemo(() => ({ ...formValues, urls: urls.split('\n'), - triggerWords: triggerWords.split(';'), + triggerWords: triggerWordsToArray(triggerWords), }), [formValues, triggerWords, urls]); const saveIntegration = useEndpointAction('POST', 'integrations.create', params, t('Integration_added')); diff --git a/package-lock.json b/package-lock.json index ebcc5adeee4..761efe741b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5038,6 +5038,13 @@ "semver": "^5.5.0", "stack-trace": "0.0.10", "uuid": "^3.2.1" + }, + "dependencies": { + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==" + } } }, "@rocket.chat/css-in-js": { -- GitLab