SwapIt / app / update-product / page.jsx
page.jsx
Raw
'use client' 

import { useState, useEffect } from "react";
import { useRouter, useSearchParams } from "next/navigation";

import Form from '@components/Form';

const EditProduct= () => {
  const router = useRouter();
  const searchParams = useSearchParams();
  const ProductId = searchParams.get('id');


  const [Submitting, setSubmitting] = useState(false);
  const [Post, setPost] = useState({
      User_ID: '',
      NOP: '',
      type: '', 
      image : '',
      desc: '',
      price: '',
  });

  useEffect(() => {
    const getProductDetails = async () =>{
      const res = await fetch(`/api/product/${ProductId}`);
      const data = await res.json();
      setPost({
        NOP: data[2],
        type: data[3],
        image: data[4],
        desc: data[5],
        price: data[6],
      })
    }
        
    if(ProductId){
      getProductDetails();
    } 
  },[ProductId])

  const UpdateProduct = async (e) => {
    e.preventDefault();
    setSubmitting(true);

    if(!ProductId) return alert('ProductId not found')

    try{
      const res = await fetch(`/api/product/${ProductId}`,
        {
          method: 'PATCH',
          body: JSON.stringify({
            NOP: Post.NOP,
            type: Post.type,
            image: Post.image,
            desc: Post.desc,
            price: Post.price,
          })
        });
      if(res.ok){
        router.push('/')
      }

    }catch(error){
      console.log(error);
    }finally{
      setSubmitting(false);
    }
  } 

  return (
    <Form 
        type = 'Edit'
        Post = {Post}
        setPost = {setPost}
        Submitting ={Submitting}
        handleSubmit = {UpdateProduct}

    />
  )
}

export default EditProduct;