import React, { useState, useEffect } from "react"; import { Table, Tag, Space, Button, Modal, Checkbox, Input, Typography, Tooltip, Select } from 'antd'; import { DeleteOutlined, EyeTwoTone, EyeInvisibleOutlined } from '@ant-design/icons'; import {isValidUrl} from '../utils/urls'; const { Title, Paragraph, Text } = Typography; const { Option } = Select; import format from 'date-fns/format' import { fetchData, DELETE_WEBHOOK, CREATE_WEBHOOK, WEBHOOKS, } from "../utils/apis"; const availableEvents = { 'CHAT': { name: 'Chat messages', description: 'When a user sends a chat message', color: 'purple' }, 'USER_JOINED': { name: 'User joined', description: 'When a user joins the chat', color: 'green'}, 'NAME_CHANGE': { name: 'User name changed', description: 'When a user changes their name', color: 'blue'}, 'VISIBILITY-UPDATE': { name: 'Message visibility changed', description: 'When a message visibility changes, likely due to moderation', color: 'red'}, 'STREAM_STARTED': {name: 'Stream started', description: 'When a stream starts', color: 'orange'}, 'STREAM_STOPPED': {name: 'Stream stopped', description: 'When a stream stops', color: 'cyan'} }; function convertEventStringToTag(eventString) { if (!eventString || !availableEvents[eventString]) { return null; } const event = availableEvents[eventString]; return ( {event.name} ); } function NewWebhookModal(props) { const [selectedEvents, setSelectedEvents] = useState([]); const [webhookUrl, setWebhookUrl] = useState(''); const events = Object.keys(availableEvents).map(function (key) { return { value: key, label: availableEvents[key].description } }); function onChange(checkedValues) { setSelectedEvents(checkedValues); } function selectAll() { setSelectedEvents(Object.keys(availableEvents)); } function save() { props.onOk(webhookUrl, selectedEvents) // Reset the modal setWebhookUrl(''); setSelectedEvents(null); } const okButtonProps = { disabled: selectedEvents?.length === 0 || !isValidUrl(webhookUrl) }; return (
setWebhookUrl(input.currentTarget.value)} />

Select the events that will be sent to this webhook.

) } export default function Webhooks() { const [webhooks, setWebhooks] = useState([]); const [isModalVisible, setIsModalVisible] = useState(false); const columns = [ { title: '', key: 'delete', render: (text, record) => (