import {useForm} from 'react-hook-form'; import {useState} from 'react'; import useClipboard from 'react-use-clipboard'; import {Dialog} from '../../../../ui/overlays/dialog/dialog'; import {DialogHeader} from '../../../../ui/overlays/dialog/dialog-header'; import {DialogBody} from '../../../../ui/overlays/dialog/dialog-body'; import {Form} from '../../../../ui/forms/form'; import { FormTextField, TextField, } from '../../../../ui/forms/input-field/text-field/text-field'; import {useDialogContext} from '../../../../ui/overlays/dialog/dialog-context'; import {DialogFooter} from '../../../../ui/overlays/dialog/dialog-footer'; import {Button} from '../../../../ui/buttons/button'; import { CreateAccessTokenPayload, useCreateAccessToken, } from './create-new-token'; import {ErrorIcon} from '../../../../icons/material/Error'; import {Trans} from '../../../../i18n/trans'; import {queryClient} from '@common/http/query-client'; export function CreateNewTokenDialog() { const form = useForm(); const {formId, close} = useDialogContext(); const createToken = useCreateAccessToken(form); const [plainTextToken, setPlainTextToken] = useState(); const formNode = (
{ createToken.mutate(values, { onSuccess: response => { setPlainTextToken(response.plainTextToken); queryClient.invalidateQueries({queryKey: ['users']}); }, }); }} > } required autoFocus /> ); return ( {plainTextToken ? ( ) : ( formNode )} {!plainTextToken && ( )} ); } interface PlainTextPreviewProps { plainTextToken: string; } function PlainTextPreview({plainTextToken}: PlainTextPreviewProps) { const [isCopied, copyToClipboard] = useClipboard(plainTextToken || '', { successDuration: 1000, }); return ( <> { e.currentTarget.focus(); e.currentTarget.select(); }} endAppend={ } />
); }