import { useHistory } from 'react-router-dom'; import ProjectForm from '../ProjectForm/ProjectForm'; import useProjectForm from '../hooks/useProjectForm'; import { CreateButton } from 'component/common/CreateButton/CreateButton'; import FormTemplate from 'component/common/FormTemplate/FormTemplate'; import { CREATE_PROJECT } from 'component/providers/AccessProvider/permissions'; import useProjectApi from 'hooks/api/actions/useProjectApi/useProjectApi'; import { useAuthUser } from 'hooks/api/getters/useAuth/useAuthUser'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useToast from 'hooks/useToast'; const CreateProject = () => { const { setToastData, setToastApiError } = useToast(); const { refetchUser } = useAuthUser(); const { uiConfig } = useUiConfig(); const history = useHistory(); const { projectId, projectName, projectDesc, setProjectId, setProjectName, setProjectDesc, getProjectPayload, clearErrors, validateIdUniqueness, validateName, errors, } = useProjectForm(); const { createProject, loading } = useProjectApi(); const handleSubmit = async (e: Event) => { e.preventDefault(); clearErrors(); const validName = validateName(); const validId = await validateIdUniqueness(); if (validName && validId) { const payload = getProjectPayload(); try { await createProject(payload); refetchUser(); history.push(`/projects/${projectId}`); setToastData({ title: 'Project created', text: 'Now you can add toggles to this project', confetti: true, type: 'success', }); } catch (e: any) { setToastApiError(e.toString()); } } }; const formatApiCode = () => { return `curl --location --request POST '${ uiConfig.unleashUrl }/api/admin/projects' \\ --header 'Authorization: INSERT_API_KEY' \\ --header 'Content-Type: application/json' \\ --data-raw '${JSON.stringify(getProjectPayload(), undefined, 2)}'`; }; const handleCancel = () => { history.goBack(); }; return ( ); }; export default CreateProject;