import { Field, TextInput, Box, ToggleSwitch, Icon, TextAreaInput, FieldGroup, Margins, Select, Accordion, } from '@rocket.chat/fuselage'; import React, { useMemo, useCallback } from 'react'; import { integrations as eventList } from '../../../../app/integrations/lib/rocketchat'; import Page from '../../../components/Page'; import { useTranslation } from '../../../contexts/TranslationContext'; import { useHighlightedCode } from '../../../hooks/useHighlightedCode'; import { useExampleData } from './exampleIncomingData'; const { outgoingEvents } = eventList; export default function OutgoingWebhookForm({ formValues, formHandlers, append, ...props }) { const t = useTranslation(); const { enabled, impersonateUser, event, urls, triggerWords, targetRoom, channel, username, name, alias, avatar: avatarUrl, emoji, token, scriptEnabled, script, retryFailedCalls, retryCount, retryDelay, triggerWordAnywhere, runOnEdits, } = formValues; const { handleEvent, handleEnabled, handleName, handleChannel, handleTriggerWords, handleTargetRoom, handleUrls, handleImpersonateUser, handleUsername, handleAlias, handleAvatar, handleEmoji, handleToken, handleScriptEnabled, handleScript, handleRetryFailedCalls, handleRetryCount, handleRetryDelay, handleTriggerWordAnywhere, handleRunOnEdits, } = formHandlers; const retryDelayOptions = useMemo( () => [ ['powers-of-ten', t('powers-of-ten')], ['powers-of-two', t('powers-of-two')], ['increments-of-two', t('increments-of-two')], ], [t], ); const eventOptions = useMemo( () => Object.entries(outgoingEvents).map(([key, val]) => [key, t(val.label)]), [t], ); const showChannel = useMemo(() => outgoingEvents[event].use.channel, [event]); const showTriggerWords = useMemo(() => outgoingEvents[event].use.triggerWords, [event]); const showTargetRoom = useMemo(() => outgoingEvents[event].use.targetRoom, [event]); const additionalFields = useMemo( () => ({ ...(alias && { alias }), ...(emoji && { emoji }), ...(avatarUrl && { avatar: avatarUrl }), }), [alias, avatarUrl, emoji], ); const [exampleData] = useExampleData({ additionalFields, url: null, }); const hilightedExampleJson = useHighlightedCode('json', JSON.stringify(exampleData, null, 2)); return ( e.preventDefault(), [])} qa-admin-user-edit='form' {...props} > {useMemo( () => ( {t('Event_Trigger')} ), [handleRetryDelay, retryDelay, retryDelayOptions, t], )} {useMemo( () => event === 'sendMessage' && ( {t('Integration_Word_Trigger_Placement')} {t('Integration_Word_Trigger_Placement_Description')} {t('Integration_Run_When_Message_Is_Edited')} {t('Integration_Run_When_Message_Is_Edited_Description')} ), [ event, t, triggerWordAnywhere, handleTriggerWordAnywhere, runOnEdits, handleRunOnEdits, ], )} {append} ); }