'use client' import React, { useState } from 'react' import { Card, CardContent } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import ImageUpload from './ImageUpload' import {useGetAnswer, useUploadImage} from "@/hooks/api"; import {LoaderPinwheel} from "lucide-react"; export default function QAAssistant() { const [imageUrl, setImageUrl] = useState(null) const [question, setQuestion] = useState('') const [answer, setAnswer] = useState('') const upload = useUploadImage(); const qa = useGetAnswer(); const handleImageUpload = (file: File) => { const url = URL.createObjectURL(file) setImageUrl(url) const formData = new FormData(); formData.append("image", file); upload.mutate({form: formData}); } const handleQuestionSubmit = async (e: React.FormEvent) => { e.preventDefault() try { if(upload.data?.key) { const key = upload.data.key; qa.mutate({key, text: question}, { onSuccess: (data) => { setAnswer(data[0].answer); } }); }else { //TODO } } catch (error) { console.error('Error getting answer:', error) setAnswer('Failed to get an answer. Please try again.') } } return ( null} onImageUpload={handleImageUpload} /> {imageUrl && (
Uploaded image
)} {upload.isPending &&

Your image is uploading...

}
setQuestion(e.target.value)} className="w-full" />
{answer && (