import React, { useState } from 'react'; import { Field, Form, Formik, FormikHelpers } from 'formik'; import { object, string } from 'yup'; import FormikFieldWrapper from '@/components/elements/FormikFieldWrapper'; import SpinnerOverlay from '@/components/elements/SpinnerOverlay'; import tw from 'twin.macro'; import Button from '@/components/elements/Button'; import Input from '@/components/elements/Input'; import ApiKeyModal from '@/components/dashboard/ApiKeyModal'; import { createAPIKey, useAPIKeys } from '@/api/account/api-keys'; import { useFlashKey } from '@/plugins/useFlash'; interface Values { description: string; allowedIps: string; } export default () => { const [ apiKey, setApiKey ] = useState(''); const { mutate } = useAPIKeys(); const { clearAndAddHttpError } = useFlashKey('account'); const submit = (values: Values, { setSubmitting, resetForm }: FormikHelpers) => { clearAndAddHttpError(); createAPIKey(values.description) .then(async ([ token, secretToken ]) => { await mutate((data) => { return (data || []).filter((value) => value.identifier !== token.identifier).concat(token); }, false); return secretToken; }) .then((token) => { resetForm(); setApiKey(token); }) .catch(error => clearAndAddHttpError(error)) .finally(() => setSubmitting(false)); }; return ( <> 0} onModalDismissed={() => setApiKey('')} apiKey={apiKey} /> {({ isSubmitting }) => (
)}
); };