import DialogContentText from "@material-ui/core/DialogContentText"; import React from "react"; 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 i18n from "../../i18n"; 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 => ({ contentJson: JSON.stringify(data.content), isPublished: data.isPublished ? true : data.publicationDate === "" || data.publicationDate === null ? false : true, 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 handlePageRemove = (data: PageRemove) => { if (data.pageDelete.errors.length === 0) { notify({ text: i18n.t("Removed page", { context: "notification" }) }); 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" > {{ title }}?", { context: "page remove", title: maybe( () => pageDetails.data.page.title, "..." ) } ) }} /> ); }} )} )} ); }; PageDetails.displayName = "PageDetails"; export default PageDetails;