"use client"; import { useState, useTransition } from "react"; import { zodResolver } from "@hookform/resolvers/zod"; import { User } from "@prisma/client"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { cn } from "@/lib/utils"; import { userApiKeySchema } from "@/lib/validations/user"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { SectionColumns } from "@/components/dashboard/section-columns"; import { Icons } from "@/components/shared/icons"; import { CopyButton } from "../shared/copy-button"; interface UserNameFormProps { user: Pick; } type FormData = { apiKey: string; }; export function UserApiKeyForm({ user }: UserNameFormProps) { const [isPending, startTransition] = useTransition(); const [apiKey, setApiKey] = useState(user?.apiKey || ""); const { handleSubmit, formState: { errors }, } = useForm({ defaultValues: { apiKey: user?.apiKey || "", }, }); const onSubmit = handleSubmit(() => { startTransition(async () => { const response = await fetch(`/api/keys`, { method: "POST", }); if (!response.ok || response.status !== 200) { toast.error("Created Failed!", { description: response.statusText, }); } else { const res = await response.json(); setApiKey(res); toast.success(`Generated successfully!`); } }); }); return (
{errors?.apiKey && (

{errors.apiKey.message}

)}
); }