import { useHistory, useParams } from 'react-router-dom'; import useEnvironmentApi from '../../../hooks/api/actions/useEnvironmentApi/useEnvironmentApi'; import useEnvironment from '../../../hooks/api/getters/useEnvironment/useEnvironment'; import useProjectRolePermissions from '../../../hooks/api/getters/useProjectRolePermissions/useProjectRolePermissions'; import useUiConfig from '../../../hooks/api/getters/useUiConfig/useUiConfig'; import useToast from '../../../hooks/useToast'; import FormTemplate from '../../common/FormTemplate/FormTemplate'; import PermissionButton from '../../common/PermissionButton/PermissionButton'; import { ADMIN } from '../../providers/AccessProvider/permissions'; import EnvironmentForm from '../EnvironmentForm/EnvironmentForm'; import useEnvironmentForm from '../hooks/useEnvironmentForm'; const EditEnvironment = () => { const { uiConfig } = useUiConfig(); const { setToastData, setToastApiError } = useToast(); const { id } = useParams<{ id: string }>(); const { environment } = useEnvironment(id); const { updateEnvironment } = useEnvironmentApi(); const history = useHistory(); const { name, type, setName, setType, errors, clearErrors } = useEnvironmentForm(environment.name, environment.type); const { refetch } = useProjectRolePermissions(); const editPayload = () => { return { type, sortOrder: environment.sortOrder, }; }; const formatApiCode = () => { return `curl --location --request PUT '${ uiConfig.unleashUrl }/api/admin/environments/update/${id}' \\ --header 'Authorization: INSERT_API_KEY' \\ --header 'Content-Type: application/json' \\ --data-raw '${JSON.stringify(editPayload(), undefined, 2)}'`; }; const handleSubmit = async (e: Event) => { e.preventDefault(); try { await updateEnvironment(id, editPayload()); refetch(); history.push('/environments'); setToastData({ type: 'success', title: 'Successfully updated environment.', }); } catch (e: any) { setToastApiError(e.toString()); } }; const handleCancel = () => { history.goBack(); }; return ( Edit environment ); }; export default EditEnvironment;