From 82b0c18e52ab208fffd74d173f80cfb9db98b39b Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 8 Mar 2026 22:21:18 +0000 Subject: [PATCH] Update src/hooks/useProduct.ts --- src/hooks/useProduct.ts | 69 ++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 38 deletions(-) diff --git a/src/hooks/useProduct.ts b/src/hooks/useProduct.ts index 3407f3a..8015380 100644 --- a/src/hooks/useProduct.ts +++ b/src/hooks/useProduct.ts @@ -1,45 +1,38 @@ -"use client"; +import { useState, useEffect } from 'react'; -import { useEffect, useState } from "react"; -import { Product, fetchProduct } from "@/lib/api/product"; +interface Product { + id: string; + name: string; + price: string; + imageSrc: string; +} export function useProduct(productId: string) { - const [product, setProduct] = useState(null); - const [isLoading, setIsLoading] = useState(true); - const [error, setError] = useState(null); + const [product, setProduct] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); - useEffect(() => { - let isMounted = true; + useEffect(() => { + const fetchProduct = async () => { + try { + setLoading(true); + // Simulate fetch + const response = await fetch(`/api/products/${productId}`); + const data = await response.json(); + setProduct(data); + setError(null); + } catch (err) { + setError('Failed to fetch product'); + setProduct(null); + } finally { + setLoading(false); + } + }; - async function loadProduct() { - if (!productId) { - setIsLoading(false); - return; - } + if (productId) { + fetchProduct(); + } + }, [productId]); - 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(); - - return () => { - isMounted = false; - }; - }, [productId]); - - return { product, isLoading, error }; + return { product, loading, error }; }