import { PageAction } from '@/config'; import { ModalFooter, SubDrawer } from '@gpustack/core-ui'; import { useIntl } from '@umijs/max'; import { useRef, useState } from 'react'; import { FormData as PublicKeyFormData } from '../../public-keys/config/types'; import GPUServicePublicKeyForm from '../../public-keys/forms'; import useCreateSshkey from '../../public-keys/services/use-create-sshkey'; import useOverlayLayout from '../hooks/use-overlay-layout'; interface PublicKeyOverlayProps { open: boolean; onCancel: () => void; onSubmit: (values: PublicKeyFormData) => Promise | void; } const PublicKeyOverlay: React.FC = ({ open, onCancel, onSubmit }) => { const intl = useIntl(); const [loading, setLoading] = useState(false); const formRef = useRef(null); const { fetchData: createSshkey } = useCreateSshkey(); const { drawerWidth, getOverlayContainer } = useOverlayLayout(open); const handleSubmit = () => { formRef.current?.submit(); }; const handleCancel = () => { formRef.current?.resetFields(); onCancel(); }; const handleFinish = async (values: PublicKeyFormData) => { setLoading(true); try { await createSshkey({ data: values }); await onSubmit(values); } finally { setLoading(false); } }; return ( } > ); }; export default PublicKeyOverlay;