From 4fe74efeb59b5c701d1d3af09f468f254304dc2f Mon Sep 17 00:00:00 2001 From: Siddharth Bramhecha <101277141+Sid-80@users.noreply.github.com> Date: Fri, 19 Jul 2024 12:16:05 +0530 Subject: [PATCH] Feat/377 (#388) * feat: Multi-Step Form * feat: changes ui * feat: Gemini Integaretion --- .env.example | 2 ++ components/CoverLetterForm.tsx | 29 +++++++++++++++--- components/cover-letter.tsx | 7 +++++ package-lock.json | 9 ++++++ package.json | 1 + utils/Gemini.ts | 54 ++++++++++++++++++++++++++++++++++ 6 files changed, 98 insertions(+), 4 deletions(-) create mode 100644 utils/Gemini.ts diff --git a/.env.example b/.env.example index e8065af..3948e79 100644 --- a/.env.example +++ b/.env.example @@ -4,6 +4,8 @@ NEXT_PUBLIC_URL=https://git-re.vercel.app/ NEXT_PUBLIC_UPSTASH_REDIS_URL= NEXT_PUBLIC_UPSTASH_REDIS_TOKEN= +NEXT_PUBLIC_GEMINI_API_KEY=your-gemini-api-key + # Generate the token from https://github.com/settings/tokens?type=beta # Repository Access to public repositories (read-only) NEXT_PUBLIC_GITHUB_TOKEN= diff --git a/components/CoverLetterForm.tsx b/components/CoverLetterForm.tsx index 4eccb55..d507951 100644 --- a/components/CoverLetterForm.tsx +++ b/components/CoverLetterForm.tsx @@ -14,6 +14,7 @@ import { import { Textarea } from "./ui/textarea"; import { ArrowRightIcon } from "@radix-ui/react-icons"; import { SetStateAction } from "react"; +import { getCoverLetter } from "@/utils/Gemini"; const formSchema = z.object({ jobDescription: z @@ -34,7 +35,10 @@ type Props = { isSubmit: boolean; setIsJobDescription: React.Dispatch>; setIsResumeDetails: React.Dispatch>; + setIsResponseGenerated: React.Dispatch>; + setIsError: React.Dispatch>; setIsSubmit: React.Dispatch>; + setResponse: React.Dispatch>; }; export default function CoverLetterForm({ @@ -44,6 +48,9 @@ export default function CoverLetterForm({ setIsJobDescription, setIsSubmit, setIsResumeDetails, + setIsResponseGenerated, + setIsError, + setResponse, }: Props) { const form = useForm>({ resolver: zodResolver(formSchema), @@ -75,11 +82,25 @@ export default function CoverLetterForm({ } } - function onSubmit(values: z.infer) { + const onSubmit = async (values: z.infer) => { // Do something with the form values. // ✅ This will be type-safe and validated. - console.log(values); - } + const { jobDescription, project, skills, experience } = values; + + try { + const res = await getCoverLetter({ + jobDescription, + project, + skills, + experience, + }); + + console.log(res); + } catch (err) { + setIsError(true); + } + }; + return (
( - Projects + Skills