import { Field, TextInput, Box, ToggleSwitch, Icon, TextAreaInput, FieldGroup, Margins, Select, Accordion, } from '@rocket.chat/fuselage'; import React, { useMemo, useCallback } from 'react'; import { useHighlightedCode } from '../../../hooks/useHighlightedCode'; import { useExampleData } from './exampleIncomingData'; import { useTranslation } from '../../../contexts/TranslationContext'; import Page from '../../../components/Page'; import { integrations as eventList } from '../../../../app/integrations/lib/rocketchat'; 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, } = formValues; const { runOnEdits, 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 } ; }