import React, { useState } from "react"; import { IWebhookActivities } from "interfaces/webhook"; import Modal from "components/Modal"; import validURL from "components/forms/validators/valid_url"; import Slider from "components/forms/fields/Slider"; import InputField from "components/forms/fields/InputField"; import Button from "components/buttons/Button"; import RevealButton from "components/buttons/RevealButton"; import { syntaxHighlight } from "utilities/helpers"; import CustomLink from "components/CustomLink"; const baseClass = "activity-feed-automations-modal"; export interface IAFAMFormData { enabled: boolean; url: string; } interface IActivityFeedAutomationsModal { automationSettings: IWebhookActivities; onSubmit: (formData: IAFAMFormData) => void; onExit: () => void; isUpdating: boolean; } const ActivityFeedAutomationsModal = ({ automationSettings, onSubmit, onExit, isUpdating, }: IActivityFeedAutomationsModal) => { const { enable_activities_webhook: enabled, destination_url: url } = automationSettings || {}; const [formData, setFormData] = useState({ enabled, url, }); const [formErrors, setFormErrors] = useState>( {} ); const [showExamplePayload, setShowExamplePayload] = useState(false); const validateForm = (newFormData: IAFAMFormData) => { const errors: Record = {}; const { url: newUrl } = newFormData; if ( formData.enabled && !validURL({ url: newUrl || "", protocols: ["http", "https"] }) ) { const errorPrefix = newUrl ? `${newUrl} is not` : "Please enter"; errors.url = `${errorPrefix} a valid destination URL`; } return errors; }; const onFeatureEnabledChange = () => { const newFormData = { ...formData, enabled: !formData.enabled }; const isDisabling = newFormData.enabled === false; if (isDisabling) { const errors = validateForm(newFormData); if (errors.url) { newFormData.url = ""; delete formErrors.url; setFormErrors(formErrors); } setShowExamplePayload(false); } setFormData(newFormData); }; const onUrlChange = (value: string) => { const newFormData = { ...formData, url: value }; if (formErrors.url) { setFormErrors(validateForm(newFormData)); } setFormData(newFormData); }; const onModalSubmit = () => { const newErrors = validateForm(formData); setFormErrors(newErrors); if (Object.keys(newErrors).length === 0) { onSubmit(formData); } }; const renderExamplePayload = () => { return ( <>
POST https://server.com/example
        
To see the data included in each activity, check out the documentation for{" "} { }
); }; return (
{ setShowExamplePayload(!showExamplePayload); }} disabled={!formData.enabled} /> {showExamplePayload && renderExamplePayload()}
); }; export default ActivityFeedAutomationsModal;