From 00a0ffe97987754a86dc78b84343838b34442ea6 Mon Sep 17 00:00:00 2001 From: bender Date: Thu, 12 Mar 2026 03:56:34 +0000 Subject: [PATCH] Update src/hooks/useProduct.ts --- src/hooks/useProduct.ts | 63 ++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 38 deletions(-) diff --git a/src/hooks/useProduct.ts b/src/hooks/useProduct.ts index 3407f3a..05ee0da 100644 --- a/src/hooks/useProduct.ts +++ b/src/hooks/useProduct.ts @@ -1,45 +1,32 @@ -"use client"; +'use client'; -import { useEffect, useState } from "react"; -import { Product, fetchProduct } from "@/lib/api/product"; +import { useState, useEffect } from 'react'; +import { fetchProductById, Product } from '@/lib/api/product'; -export function useProduct(productId: string) { - const [product, setProduct] = useState(null); - const [isLoading, setIsLoading] = useState(true); - const [error, setError] = useState(null); +const useProduct = (productId?: string) => { + const [product, setProduct] = useState(null); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); - useEffect(() => { - let isMounted = true; + useEffect(() => { + if (!productId) return; - async function loadProduct() { - if (!productId) { - setIsLoading(false); - return; - } + const loadProduct = async () => { + setLoading(true); + setError(null); + const response = await fetchProductById(productId); + if (response.success && response.data) { + setProduct(response.data); + } else { + setError(response.message || 'Failed to fetch product'); + } + setLoading(false); + }; - try { - setIsLoading(true); - const data = await fetchProduct(productId); - if (isMounted) { - setProduct(data); - } - } catch (err) { - if (isMounted) { - setError(err instanceof Error ? err : new Error("Failed to fetch product")); - } - } finally { - if (isMounted) { - setIsLoading(false); - } - } - } + loadProduct(); + }, [productId]); - loadProduct(); + return { product, loading, error }; +}; - return () => { - isMounted = false; - }; - }, [productId]); - - return { product, isLoading, error }; -} +export default useProduct; \ No newline at end of file