From 043371685ecd97672245d767b5c3ce0645559b51 Mon Sep 17 00:00:00 2001 From: dominik-zeglen Date: Fri, 27 Sep 2019 16:09:57 +0200 Subject: [PATCH] Add update/delete actions --- .../views/ServiceDetails/ServiceDetails.tsx | 131 +++++++++++++----- 1 file changed, 95 insertions(+), 36 deletions(-) diff --git a/src/services/views/ServiceDetails/ServiceDetails.tsx b/src/services/views/ServiceDetails/ServiceDetails.tsx index da4904306..990fb766e 100644 --- a/src/services/views/ServiceDetails/ServiceDetails.tsx +++ b/src/services/views/ServiceDetails/ServiceDetails.tsx @@ -7,6 +7,13 @@ import useNotifier from "@saleor/hooks/useNotifier"; import useShop from "@saleor/hooks/useShop"; import { commonMessages } from "@saleor/intl"; import { getMutationState, maybe } from "@saleor/misc"; +import ServiceDeleteDialog from "@saleor/services/components/ServiceDeleteDialog"; +import { + ServiceDeleteMutation, + ServiceUpdateMutation +} from "@saleor/services/mutations"; +import { ServiceDelete } from "@saleor/services/types/ServiceDelete"; +import { ServiceUpdate } from "@saleor/services/types/ServiceUpdate"; import ServiceDetailsPage, { ServiceDetailsPageFormData } from "../../components/ServiceDetailsPage"; @@ -51,51 +58,103 @@ export const ServiceDetails: React.StatelessComponent = ({ }) ); + const onServiceUpdate = (data: ServiceUpdate) => { + if (!maybe(() => data.serviceAccountUpdate.errors.length !== 0)) { + notify({ + text: intl.formatMessage(commonMessages.savedChanges) + }); + } + }; + const onServiceDelete = (data: ServiceDelete) => { + if (data.serviceAccountDelete.errors.length === 0) { + notify({ + text: intl.formatMessage(commonMessages.savedChanges) + }); + navigate(serviceListUrl()); + } + }; + + const handleBack = () => navigate(serviceListUrl()); + return ( - {({ data, loading }) => { - const onServiceUpdate = (data: ServiceUpdate) => { - if (!maybe(() => data.serviceUpdate.errors.length !== 0)) { - notify({ - text: intl.formatMessage(commonMessages.savedChanges) - }); - } - }; - const onServiceDelete = (data: ServiceDelete) => { - if (!maybe(() => data.serviceDelete.errors.length !== 0)) { - notify({ - text: intl.formatMessage(commonMessages.savedChanges) - }); - navigate(serviceListUrl()); - } - }; + {({ data, loading }) => ( + + {(updateService, updateServiceOpts) => ( + + {(deleteService, deleteServiceOpts) => { + const handleSubmit = (data: ServiceDetailsPageFormData) => + updateService({ + variables: { + id, + input: { + isActive: data.isActive, + name: data.name, + permissions: data.hasFullAccess + ? shop.permissions.map(permission => permission.code) + : data.permissions + } + } + }); - const handleBack = () => navigate(serviceListUrl()); + const handleRemoveConfirm = () => + deleteService({ + variables: { + id + } + }); - const handleSubmit = (data: ServiceDetailsPageFormData) => undefined; + const formTransitionState = getMutationState( + updateServiceOpts.called, + updateServiceOpts.loading, + maybe( + () => updateServiceOpts.data.serviceAccountUpdate.errors + ) + ); - return ( - <> - data.serviceAccount.name)} /> - openModal("remove")} - onSubmit={handleSubmit} - onTokenCreate={() => openModal("create-token")} - onTokenDelete={() => openModal("delete-token")} - permissions={maybe(() => shop.permissions)} - service={maybe(() => data.serviceAccount)} - saveButtonBarState="default" - /> - - ); - }} + const deleteTransitionState = getMutationState( + deleteServiceOpts.called, + deleteServiceOpts.loading, + maybe( + () => deleteServiceOpts.data.serviceAccountDelete.errors + ) + ); + + return ( + <> + data.serviceAccount.name)} + /> + openModal("remove")} + onSubmit={handleSubmit} + onTokenCreate={() => openModal("create-token")} + onTokenDelete={() => openModal("remove-token")} + permissions={maybe(() => shop.permissions)} + service={maybe(() => data.serviceAccount)} + saveButtonBarState={formTransitionState} + /> + data.serviceAccount.name, "...")} + onClose={closeModal} + onConfirm={handleRemoveConfirm} + open={params.action === "remove"} + /> + + ); + }} + + )} + + )} ); };