diff --git a/client/admin/integrations/edit/EditOutgoingWebhook.js b/client/admin/integrations/edit/EditOutgoingWebhook.js index 173470a19aa8f1953eb582f3ab3edb11ec650885..bf8f18cf796e313df9198a904cbd481bdd4dc907 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 0000000000000000000000000000000000000000..4aa2bb1a777e367763ce514388d05a2c931a0360 --- /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 6e5569b58f2ea3062b34596cc4dc9f35eb88fcf3..fcad3909cef66c103f518bec54e9430f1f1ff416 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 ebcc5adeee46f61879257a328cdf69faa281ee9f..761efe741b49066516c68d8106e69e68c54c618f 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": {