import { CopyButton } from '@/components/CopyButton' import { useTranslate } from '@tolgee/react' import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, Stack, Input, ModalFooter, Button, Text, InputGroup, InputRightElement, } from '@chakra-ui/react' import React, { FormEvent, useRef, useState } from 'react' import { createApiTokenQuery } from '../queries/createApiTokenQuery' import { ApiTokenFromServer } from '../types' type Props = { userId: string isOpen: boolean onNewToken: (token: ApiTokenFromServer) => void onClose: () => void } export const CreateTokenModal = ({ userId, isOpen, onClose, onNewToken, }: Props) => { const inputRef = useRef(null) const { t } = useTranslate() const [name, setName] = useState('') const [isSubmitting, setIsSubmitting] = useState(false) const [newTokenValue, setNewTokenValue] = useState() const createToken = async (e: FormEvent) => { e.preventDefault() setIsSubmitting(true) const { data } = await createApiTokenQuery(userId, { name }) if (data?.apiToken) { setNewTokenValue(data.apiToken.token) onNewToken(data.apiToken) } setIsSubmitting(false) } return ( {newTokenValue ? t('account.apiTokens.createModal.createdHeading') : t('account.apiTokens.createModal.createHeading')} {newTokenValue ? ( {t('account.apiTokens.createModal.copyInstruction')}{' '} {t('account.apiTokens.createModal.securityWarning')} ) : ( {t('account.apiTokens.createModal.nameInput.label')} setName(e.target.value)} /> )} {newTokenValue ? ( ) : ( )} ) }