import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import Typography from "@material-ui/core/Typography"; import CardTitle from "@saleor/components/CardTitle"; import ControlledCheckbox from "@saleor/components/ControlledCheckbox"; import Hr from "@saleor/components/Hr"; import { ChangeEvent } from "@saleor/hooks/useForm"; import { WebhookEventTypeEnum } from "@saleor/types/globalTypes"; import React from "react"; import { useIntl } from "react-intl"; interface WebhookEventsProps { data: { allEvents: boolean; events: string[]; }; disabled: boolean; onChange: (event: ChangeEvent, cb?: () => void) => void; } const WebhookEvents: React.StatelessComponent = ({ data, disabled, onChange }) => { const intl = useIntl(); const eventsEnum = Object.values(WebhookEventTypeEnum); const translatedEvents = { [WebhookEventTypeEnum.ANY_EVENTS]: intl.formatMessage({ defaultMessage: "Any events", description: "event" }), [WebhookEventTypeEnum.CUSTOMER_CREATED]: intl.formatMessage({ defaultMessage: "Customer created", description: "event" }), [WebhookEventTypeEnum.ORDER_CANCELLED]: intl.formatMessage({ defaultMessage: "Order cancelled", description: "event" }), [WebhookEventTypeEnum.ORDER_CREATED]: intl.formatMessage({ defaultMessage: "Order created", description: "event" }), [WebhookEventTypeEnum.ORDER_FULLY_PAID]: intl.formatMessage({ defaultMessage: "Order fully paid", description: "event" }), [WebhookEventTypeEnum.ORDER_UPDATED]: intl.formatMessage({ defaultMessage: "Order updated", description: "event" }), [WebhookEventTypeEnum.PRODUCT_CREATED]: intl.formatMessage({ defaultMessage: "Product created", description: "event" }) }; const handleAllEventsChange = (event: ChangeEvent) => onChange(event, () => onChange({ target: { name: "events", value: event.target.value ? WebhookEventTypeEnum.ANY_EVENTS : [] } } as any) ); const handleEventsChange = (event: ChangeEvent) => { onChange({ target: { name: "events", value: event.target.value ? data.events.concat([event.target.name]) : data.events.filter(events => events !== event.target.name) } } as any); }; return ( {intl.formatMessage({ defaultMessage: "Expand or restrict webhooks permissions to register certain events in Saleor system.", description: "webhook events" })} {!data.allEvents && ( <>
{eventsEnum.slice(1).map(event => { return (
); })} )}
); }; WebhookEvents.displayName = "WebhookEvents"; export default WebhookEvents;