import { Field, TextInput, Box, ToggleSwitch, Icon, TextAreaInput, FieldGroup, Margins } from '@rocket.chat/fuselage'; import React, { useMemo, useCallback } from 'react'; import Page from '../../../components/Page'; import { useAbsoluteUrl } from '../../../contexts/ServerContext'; import { useTranslation } from '../../../contexts/TranslationContext'; import { useHighlightedCode } from '../../../hooks/useHighlightedCode'; import { useExampleData } from './exampleIncomingData'; export default function IncomingWebhookForm({ formValues, formHandlers, extraData = {}, append, ...props }) { const t = useTranslation(); const absoluteUrl = useAbsoluteUrl(); const { enabled, channel, username, name, alias, avatarUrl, emoji, scriptEnabled, script } = formValues; const { handleEnabled, handleChannel, handleUsername, handleName, handleAlias, handleAvatarUrl, handleEmoji, handleScriptEnabled, handleScript, } = formHandlers; const url = absoluteUrl(`hooks/${extraData._id}/${extraData.token}`); const additionalFields = useMemo( () => ({ ...(alias && { alias }), ...(emoji && { emoji }), ...(avatarUrl && { avatar: avatarUrl }), }), [alias, avatarUrl, emoji], ); const [exampleData, curlData] = useExampleData({ additionalFields, url, }); const hilightedExampleJson = useHighlightedCode('json', JSON.stringify(exampleData, null, 2)); return ( e.preventDefault(), [])} qa-admin-user-edit='form' {...props} > {useMemo( () => ( {t('Enabled')} ), [enabled, handleEnabled, t], )} {useMemo( () => ( {t('Name_optional')} {t('You_should_name_it_to_easily_manage_your_integrations')} ), [t, name, handleName], )} {useMemo( () => ( {t('Post_to_Channel')} } /> {t('Messages_that_are_sent_to_the_Incoming_WebHook_will_be_posted_here')} ), [channel, handleChannel, t], )} {useMemo( () => ( {t('Post_as')} } /> {t('Choose_the_username_that_this_integration_will_post_as')} {t('Should_exists_a_user_with_this_username')} ), [t, username, handleUsername], )} {useMemo( () => ( {`${t('Alias')} (${t('optional')})`} } /> {t('Choose_the_alias_that_will_appear_before_the_username_in_messages')} ), [alias, handleAlias, t], )} {useMemo( () => ( {`${t('Avatar_URL')} (${t('optional')})`} } /> {t('You_can_change_a_different_avatar_too')} {t('Should_be_a_URL_of_an_image')} ), [avatarUrl, handleAvatarUrl, t], )} {useMemo( () => ( {`${t('Emoji')} (${t('optional')})`} } /> {t('You_can_use_an_emoji_as_avatar')} ), [emoji, handleEmoji, t], )} {useMemo( () => ( {t('Script_Enabled')} ), [t, scriptEnabled, handleScriptEnabled], )} {useMemo( () => ( {t('Script')} } /> ), [t, script, handleScript], )} {useMemo( () => !extraData._id && ( <> {t('Webhook_URL')} } disabled /> {t('Send_your_JSON_payloads_to_this_URL')} {t('Token')} } disabled /> ), [extraData._id, t], )} {useMemo( () => extraData._id && ( <> {t('Webhook_URL')} } /> {t('Send_your_JSON_payloads_to_this_URL')} {t('Token')} } /> ), [extraData._id, extraData.token, t, url], )} {useMemo( () => ( {t('Example_payload')}
											
										
), [hilightedExampleJson, t], )} {useMemo( () => extraData._id && ( {t('Curl')} } /> ), [curlData, extraData._id, t], )} {append}
); }