import { typeboxResolver } from '@hookform/resolvers/typebox'; import { DialogClose, DialogTrigger } from '@radix-ui/react-dialog'; import { Static, Type } from '@sinclair/typebox'; import { t } from 'i18next'; import { Pencil } from 'lucide-react'; import { useState, forwardRef } from 'react'; import { useForm } from 'react-hook-form'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Form, FormField, FormItem, FormMessage } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Tooltip, TooltipContent, TooltipTrigger, } from '@/components/ui/tooltip'; import { appConnectionsMutations } from '../lib/app-connections-hooks'; const RenameConnectionSchema = Type.Object({ displayName: Type.String(), }); type RenameConnectionSchema = Static; type RenameConnectionDialogProps = { connectionId: string; currentName: string; userHasPermissionToRename: boolean; onRename: () => void; }; const RenameConnectionDialog = forwardRef< HTMLDivElement, RenameConnectionDialogProps >(({ connectionId, currentName, userHasPermissionToRename, onRename }, _) => { const [isRenameDialogOpen, setIsRenameDialogOpen] = useState(false); const renameConnectionForm = useForm({ resolver: typeboxResolver(RenameConnectionSchema), defaultValues: { displayName: currentName, }, }); const { mutate: renameConnection, isPending } = appConnectionsMutations.useRenameAppConnection({ currentName, setIsRenameDialogOpen, renameConnectionForm, refetch: onRename, }); return ( setIsRenameDialogOpen(open)} > <> {!userHasPermissionToRename ? t('Permission needed') : t('Edit')} {t('Rename')} {currentName}
renameConnection({ connectionId, displayName: data.displayName, }), )} > ( )} /> {renameConnectionForm?.formState?.errors?.root?.serverError && ( { renameConnectionForm.formState.errors.root.serverError .message } )}
); }); RenameConnectionDialog.displayName = 'RenameConnectionDialog'; export { RenameConnectionDialog };