Add update/delete actions

This commit is contained in:
dominik-zeglen 2019-09-27 16:09:57 +02:00
parent 54bb16a90a
commit 043371685e

View file

@ -7,6 +7,13 @@ import useNotifier from "@saleor/hooks/useNotifier";
import useShop from "@saleor/hooks/useShop"; import useShop from "@saleor/hooks/useShop";
import { commonMessages } from "@saleor/intl"; import { commonMessages } from "@saleor/intl";
import { getMutationState, maybe } from "@saleor/misc"; 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, { import ServiceDetailsPage, {
ServiceDetailsPageFormData ServiceDetailsPageFormData
} from "../../components/ServiceDetailsPage"; } from "../../components/ServiceDetailsPage";
@ -51,51 +58,103 @@ export const ServiceDetails: React.StatelessComponent<OrderListProps> = ({
}) })
); );
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 ( return (
<ServiceDetailsQuery <ServiceDetailsQuery
displayLoader displayLoader
variables={{ id }} variables={{ id }}
require={["serviceAccount"]} require={["serviceAccount"]}
> >
{({ data, loading }) => { {({ data, loading }) => (
const onServiceUpdate = (data: ServiceUpdate) => { <ServiceUpdateMutation onCompleted={onServiceUpdate}>
if (!maybe(() => data.serviceUpdate.errors.length !== 0)) { {(updateService, updateServiceOpts) => (
notify({ <ServiceDeleteMutation onCompleted={onServiceDelete}>
text: intl.formatMessage(commonMessages.savedChanges) {(deleteService, deleteServiceOpts) => {
}); const handleSubmit = (data: ServiceDetailsPageFormData) =>
} updateService({
}; variables: {
const onServiceDelete = (data: ServiceDelete) => { id,
if (!maybe(() => data.serviceDelete.errors.length !== 0)) { input: {
notify({ isActive: data.isActive,
text: intl.formatMessage(commonMessages.savedChanges) name: data.name,
}); permissions: data.hasFullAccess
navigate(serviceListUrl()); ? 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 ( const deleteTransitionState = getMutationState(
<> deleteServiceOpts.called,
<WindowTitle title={maybe(() => data.serviceAccount.name)} /> deleteServiceOpts.loading,
<ServiceDetailsPage maybe(
disabled={loading} () => deleteServiceOpts.data.serviceAccountDelete.errors
errors={[]} )
onBack={handleBack} );
onDelete={() => openModal("remove")}
onSubmit={handleSubmit} return (
onTokenCreate={() => openModal("create-token")} <>
onTokenDelete={() => openModal("delete-token")} <WindowTitle
permissions={maybe(() => shop.permissions)} title={maybe(() => data.serviceAccount.name)}
service={maybe(() => data.serviceAccount)} />
saveButtonBarState="default" <ServiceDetailsPage
/> disabled={loading}
</> errors={[]}
); onBack={handleBack}
}} onDelete={() => openModal("remove")}
onSubmit={handleSubmit}
onTokenCreate={() => openModal("create-token")}
onTokenDelete={() => openModal("remove-token")}
permissions={maybe(() => shop.permissions)}
service={maybe(() => data.serviceAccount)}
saveButtonBarState={formTransitionState}
/>
<ServiceDeleteDialog
confirmButtonState={deleteTransitionState}
name={maybe(() => data.serviceAccount.name, "...")}
onClose={closeModal}
onConfirm={handleRemoveConfirm}
open={params.action === "remove"}
/>
</>
);
}}
</ServiceDeleteMutation>
)}
</ServiceUpdateMutation>
)}
</ServiceDetailsQuery> </ServiceDetailsQuery>
); );
}; };