saleor-dashboard/src/services/views/ServiceCreate/ServiceCreate.tsx

78 lines
2.5 KiB
TypeScript
Raw Normal View History

2019-09-27 12:21:38 +00:00
import { WindowTitle } from "@saleor/components/WindowTitle";
import useNavigator from "@saleor/hooks/useNavigator";
import useNotifier from "@saleor/hooks/useNotifier";
import useShop from "@saleor/hooks/useShop";
import { commonMessages } from "@saleor/intl";
import { ServiceCreateMutation } from "@saleor/services/mutations";
2019-09-27 14:01:34 +00:00
import { ServiceCreate as ServiceCreateData } from "@saleor/services/types/ServiceCreate";
import React from "react";
import { useIntl } from "react-intl";
2019-09-27 12:21:38 +00:00
import ServiceCreatePage, {
ServiceCreatePageFormData
} from "../../components/ServiceCreatePage";
2019-09-27 14:01:34 +00:00
import { serviceListUrl, serviceUrl } from "../../urls";
2019-09-27 12:21:38 +00:00
2019-09-30 16:46:48 +00:00
interface ServiceCreateProps {
setToken: (token: string) => void;
}
export const ServiceCreate: React.FC<ServiceCreateProps> = ({ setToken }) => {
2019-09-27 12:21:38 +00:00
const navigate = useNavigator();
const notify = useNotifier();
const intl = useIntl();
const shop = useShop();
2019-09-27 14:01:34 +00:00
const onSubmit = (data: ServiceCreateData) => {
if (data.serviceAccountCreate.errors.length === 0) {
notify({
2020-07-01 09:39:36 +00:00
status: "success",
2019-09-27 14:01:34 +00:00
text: intl.formatMessage(commonMessages.savedChanges)
});
navigate(serviceUrl(data.serviceAccountCreate.serviceAccount.id));
2019-09-30 16:46:48 +00:00
setToken(data.serviceAccountCreate.authToken);
2019-09-27 14:01:34 +00:00
}
};
2019-09-27 12:21:38 +00:00
const handleBack = () => navigate(serviceListUrl());
return (
<ServiceCreateMutation onCompleted={onSubmit}>
{(serviceCreate, serviceCreateOpts) => {
const handleSubmit = (data: ServiceCreatePageFormData) =>
serviceCreate({
variables: {
input: {
isActive: data.isActive,
name: data.name,
permissions: data.hasFullAccess
? shop.permissions.map(permission => permission.code)
: data.permissions
}
}
});
return (
<>
<WindowTitle
title={intl.formatMessage({
defaultMessage: "Create Service Account",
description: "window title"
})}
/>
<ServiceCreatePage
disabled={false}
2020-03-16 09:55:16 +00:00
errors={serviceCreateOpts.data?.serviceAccountCreate.errors || []}
2019-09-27 12:21:38 +00:00
onBack={handleBack}
onSubmit={handleSubmit}
2020-03-16 09:55:16 +00:00
permissions={shop?.permissions}
2019-12-06 17:17:44 +00:00
saveButtonBarState={serviceCreateOpts.status}
2019-09-27 12:21:38 +00:00
/>
</>
);
}}
</ServiceCreateMutation>
);
};
export default ServiceCreate;