import AppHeader from "@saleor/components/AppHeader"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; import Container from "@saleor/components/Container"; import Form from "@saleor/components/Form"; import FormSpacer from "@saleor/components/FormSpacer"; import Grid from "@saleor/components/Grid"; import PageHeader from "@saleor/components/PageHeader"; import SaveButtonBar from "@saleor/components/SaveButtonBar"; import { SearchServiceAccount_search_edges_node } from "@saleor/containers/SearchServiceAccount/types/SearchServiceAccount"; import useStateFromProps from "@saleor/hooks/useStateFromProps"; import { sectionNames } from "@saleor/intl"; import { maybe } from "@saleor/misc"; import { UserError } from "@saleor/types"; import { WebhookEventTypeEnum } from "@saleor/types/globalTypes"; import createSingleAutocompleteSelectHandler from "@saleor/utils/handlers/singleAutocompleteSelectChangeHandler"; import WebhookEvents from "@saleor/webhooks/components/WebhookEvents"; import WebhookInfo from "@saleor/webhooks/components/WebhookInfo"; import WebhookStatus from "@saleor/webhooks/components/WebhookStatus"; import { WebhookDetails_webhook } from "@saleor/webhooks/types/WebhookDetails"; import React from "react"; import { useIntl } from "react-intl"; export interface FormData { id: string; events: WebhookEventTypeEnum[]; isActive: boolean; name: string; secretKey: string | null; targetUrl: string; serviceAccount: string; allEvents: boolean; } export interface WebhooksDetailsPageProps { disabled: boolean; errors: UserError[]; webhook: WebhookDetails_webhook; services?: SearchServiceAccount_search_edges_node[]; saveButtonBarState: ConfirmButtonTransitionState; onBack: () => void; onDelete: () => void; fetchServiceAccounts: (data: string) => void; onSubmit: (data: FormData) => void; } const WebhooksDetailsPage: React.FC = ({ disabled, errors, webhook, saveButtonBarState, services, fetchServiceAccounts, onBack, onDelete, onSubmit }) => { const intl = useIntl(); const initialForm: FormData = { allEvents: !!maybe(() => webhook.events, []).find( event => event.eventType === WebhookEventTypeEnum.ANY_EVENTS ), events: maybe(() => webhook.events, []).map(event => event.eventType), id: maybe(() => webhook.id, null), isActive: maybe(() => webhook.isActive, false), name: maybe(() => webhook.name, ""), secretKey: maybe(() => webhook.secretKey, ""), serviceAccount: maybe(() => webhook.serviceAccount.id, ""), targetUrl: maybe(() => webhook.targetUrl, "") }; const [ selectedServiceAcccounts, setSelectedServiceAcccounts ] = useStateFromProps(maybe(() => webhook.serviceAccount.name, "")); const servicesChoiceList = maybe( () => services.map(node => ({ label: node.name, value: node.id })), [] ); return (
{({ data, errors, hasChanged, submit, change }) => { const handleServiceSelect = createSingleAutocompleteSelectHandler( change, setSelectedServiceAcccounts, servicesChoiceList ); return ( {intl.formatMessage(sectionNames.webhooks)} webhook.name, "...") } )} />
); }}
); }; WebhooksDetailsPage.displayName = "WebhooksDetailsPage"; export default WebhooksDetailsPage;