import { CopyButton } from '@/components/CopyButton' import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, Stack, Input, ModalFooter, Button, Text, InputGroup, InputRightElement, } from '@chakra-ui/react' import React, { FormEvent, 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 [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 ? 'Token Created' : 'Create Token'} {newTokenValue ? ( Please copy your token and store it in a safe place.{' '} For security reasons we cannot show it again. ) : ( Enter a unique name for your token to differentiate it from other tokens. setName(e.target.value)} /> )} {newTokenValue ? ( ) : ( )} ) }