import DialogContentText from "@material-ui/core/DialogContentText"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; import ActionDialog from "@saleor/components/ActionDialog"; import { WindowTitle } from "@saleor/components/WindowTitle"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; import { getMutationState, maybe } from "../../misc"; import { PageInput } from "../../types/globalTypes"; import PageDetailsPage, { FormData } from "../components/PageDetailsPage"; import { TypedPageRemove, TypedPageUpdate } from "../mutations"; import { TypedPageDetailsQuery } from "../queries"; import { PageRemove } from "../types/PageRemove"; import { pageListUrl, pageUrl, PageUrlQueryParams } from "../urls"; export interface PageDetailsProps { id: string; params: PageUrlQueryParams; } const createPageInput = (data: FormData): PageInput => { return { contentJson: JSON.stringify(data.content), isPublished: data.isPublished, publicationDate: data.isPublished ? null : data.publicationDate === "" ? null : data.publicationDate, seo: { description: data.seoDescription, title: data.seoTitle }, slug: data.slug === "" ? null : data.slug, title: data.title }; }; export const PageDetails: React.StatelessComponent = ({ id, params }) => { const navigate = useNavigator(); const notify = useNotifier(); const intl = useIntl(); const handlePageRemove = (data: PageRemove) => { if (data.pageDelete.errors.length === 0) { notify({ text: intl.formatMessage({ defaultMessage: "Removed page" }) }); navigate(pageListUrl()); } }; return ( {(pageRemove, pageRemoveOpts) => ( {(pageUpdate, pageUpdateOpts) => ( {pageDetails => { const formTransitionState = getMutationState( pageUpdateOpts.called, pageUpdateOpts.loading, maybe(() => pageUpdateOpts.data.pageUpdate.errors) ); const removeTransitionState = getMutationState( pageRemoveOpts.called, pageRemoveOpts.loading, maybe(() => pageRemoveOpts.data.pageDelete.errors) ); return ( <> pageDetails.data.page.title)} /> pageUpdateOpts.data.pageUpdate.errors, [] )} saveButtonBarState={formTransitionState} page={maybe(() => pageDetails.data.page)} onBack={() => navigate(pageListUrl())} onRemove={() => navigate( pageUrl(id, { action: "remove" }) ) } onSubmit={formData => pageUpdate({ variables: { id, input: createPageInput(formData) } }) } /> navigate(pageUrl(id))} onConfirm={pageRemove} variant="delete" > {maybe( () => pageDetails.data.page.title, "..." )} ) }} /> ); }} )} )} ); }; PageDetails.displayName = "PageDetails"; export default PageDetails;