diff --git a/Frontend/src/pages/UserPanel/Ai.jsx b/Frontend/src/pages/UserPanel/Ai.jsx new file mode 100644 index 0000000..f4ee2e4 --- /dev/null +++ b/Frontend/src/pages/UserPanel/Ai.jsx @@ -0,0 +1,77 @@ +import React, { useState } from "react"; +import Loader from "../../components/Loader"; + +const Ai = () => { + const [selectedFile, setSelectedFile] = useState(null); + const [result, setResult] = useState(""); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(""); + + const handleFileChange = (e) => { + setSelectedFile(e.target.files[0]); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + if (!selectedFile) return; + setLoading(true); + setResult(""); + setError(""); + + try { + const formData = new FormData(); + formData.append("image", selectedFile); + + // Update the URL if needed. + const response = await fetch("http://localhost:8000/api/v1/vegetable", { + method: "POST", + body: formData, + }); + + if (!response.ok) { + throw new Error("Failed to classify image"); + } + + const data = await response.json(); + // Assume the API returns an object with an "output" field. + setResult(data.output || "No result provided"); + } catch (err) { + console.error("Error:", err); + setError(err.message); + } finally { + setLoading(false); + } + }; + + return ( +
+

+ Vegetable Classifier +

+
+ + +
+ {error &&

{error}

} + {result && ( +
+

Result:

+

{result}

+
+ )} +
+ ); +}; + +export default Ai;