import FormTemplate from 'component/common/FormTemplate/FormTemplate'; import { useHistory } from 'react-router-dom'; import ApiTokenForm from '../ApiTokenForm/ApiTokenForm'; import { CreateButton } from 'component/common/CreateButton/CreateButton'; import useApiTokensApi from 'hooks/api/actions/useApiTokensApi/useApiTokensApi'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useToast from 'hooks/useToast'; import useApiTokenForm from '../hooks/useApiTokenForm'; import { ADMIN } from 'component/providers/AccessProvider/permissions'; import { ConfirmToken } from '../ConfirmToken/ConfirmToken'; import { useState } from 'react'; import { scrollToTop } from '../../../common/util'; import { formatUnknownError } from '../../../../utils/format-unknown-error'; export const CreateApiToken = () => { const { setToastApiError } = useToast(); const { uiConfig } = useUiConfig(); const history = useHistory(); const [showConfirm, setShowConfirm] = useState(false); const [token, setToken] = useState(''); const { getApiTokenPayload, username, type, project, environment, setUsername, setTokenType, setProject, setEnvironment, isValid, errors, clearErrors, } = useApiTokenForm(); const { createToken, loading } = useApiTokensApi(); const handleSubmit = async (e: Event) => { e.preventDefault(); if (!isValid()) { return; } try { const payload = getApiTokenPayload(); await createToken(payload) .then(res => res.json()) .then(api => { scrollToTop(); setToken(api.secret); setShowConfirm(true); }); } catch (error: unknown) { setToastApiError(formatUnknownError(error)); } }; const closeConfirm = () => { setShowConfirm(false); history.push('/admin/api'); }; const formatApiCode = () => { return `curl --location --request POST '${ uiConfig.unleashUrl }/api/admin/api-tokens' \\ --header 'Authorization: INSERT_API_KEY' \\ --header 'Content-Type: application/json' \\ --data-raw '${JSON.stringify(getApiTokenPayload(), undefined, 2)}'`; }; const handleCancel = () => { history.goBack(); }; return ( ); };