import React, { useMemo, useCallback } from 'react'; import { Field, TextInput, Box, ToggleSwitch, Icon, TextAreaInput, FieldGroup, Margins } from '@rocket.chat/fuselage'; import { useTranslation } from '../../contexts/TranslationContext'; import { useAbsoluteUrl } from '../../contexts/ServerContext'; import { useHighlightedCode } from '../../hooks/useHighlightedCode'; import { useExampleData } from './exampleIncomingData'; import Page from '../../components/basic/Page'; 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 }
; }