import { __experimentalHeading as Heading, Button, Card, CardBody, CardHeader, Disabled, Flex, FlexBlock, Spinner, TextControl, ToggleControl, } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; import { useContext, useState } from "react"; import { PagePropsContext } from "../../hooks/usePagePropsContext"; import { Project } from "../../types"; import codewpaiRequest from '../../utils/codewpaiRequest'; import { useNotificationsContext } from "../../hooks/useNotificationsContext"; export const TokenApiForm = () => { const pageProps = useContext(PagePropsContext); const [project, setProject] = useState(pageProps.project); const [isSaving, setIsSaving] = useState(false); const onTokenChanged = (value: string) => { setProject({ ...project, token: value }); }; const { addNotification } = useNotificationsContext(); const onClickSaveToken = async () => { const data = await codewpaiRequest({ action: 'codewpai_save_api_token', data: { token: project.token, autoSynchronize: project.auto_synchronize, }, addNotification }) setProject({ ...project, ...data }); } const onAutoSynchronizeChanged = async (value: boolean) => { setProject({ ...project, auto_synchronize: value }); if (project.token_placeholder) { const data = await codewpaiRequest({ action: 'codewpai_api_auto_synchronize_save', data: { autoSynchronize: value }, addNotification }) setProject({ ...project, ...data }); } }; return ( {__('API Key', 'ai-for-wp')}

{__( 'Click the button above to get you API key. You can use this key to connect your website to a CodeWP project.', 'ai-for-wp' )}

{__( 'After you get your API key, add it on the field below and click save', 'ai-for-wp' )}

onTokenChanged(value)} value={project.token} disabled={isSaving} placeholder={project.token_placeholder} type="text" className="codewpai-api-key-field" /> {(project.token || project.token_placeholder) && ( onAutoSynchronizeChanged(value)} /> )} {isSaving && (
)}

{project.project_id && project.project_name && (
{__('Project', 'ai-for-wp')}:{' '} {project.project_name}{' '} ({project.project_id})
)} {project.synchronized_at && (
{__('Last synchronized', 'ai-for-wp')}: {project.synchronized_at}
)}
); };