import React, { useState } from "react"; import { useDropzone } from "react-dropzone"; import Head from "next/head"; import { useRouter } from "next/router"; import { withPageAuthRequired } from "@auth0/nextjs-auth0"; import Navbar from "../../components/Navbar"; export default withPageAuthRequired(function AddNewProduct() { const router = useRouter(); const [name, setName] = useState(""); const [link, setLink] = useState(""); const [description, setDescription] = useState(""); const [uploadImage, setUploadImage] = useState(""); const [file, setFile] = useState(""); const [loading, setLoading] = useState(false); const { getRootProps, getInputProps } = useDropzone({ accept: "image/*", multiple: false, onDrop: (acceptedFiles) => { const file = acceptedFiles[0]; const reader = new FileReader(); reader.readAsDataURL(file); reader.onloadend = () => { setUploadImage(reader.result); }; reader.onerror = () => { console.error("Something has happend."); }; setFile(URL.createObjectURL(file)); }, }); const createProduct = async ({ name, description, link, uploadImage }) => { try { await fetch("/api/createProduct", { method: "POST", body: JSON.stringify({ name, description, link, uploadImage }), headers: { "Content-Type": "application/json", }, }); } catch (err) { console.error(err); } }; const handleSubmit = async (e) => { await e.preventDefault(); await setName(""); await setDescription(""); await setLink(""); await setUploadImage(""); await setFile(""); await setLoading(true); await createProduct({ name, description, link, uploadImage }); await router.push("/"); }; return (
Add new Product

Add New Product

{loading ? (
Uploading! New Product is being added.
) : (
setName(e.target.value)} autoComplete="given-name" className="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 rounded-md" required />