UNPKG

storenest-commerce

Version:

Complete e-commerce SDK for Storenest platform with React components, multi-language support, secure checkout, and enterprise-grade security

95 lines (94 loc) 3.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useProducts = useProducts; exports.useProductDetail = useProductDetail; const react_1 = require("react"); const product_1 = require("../product"); function useProducts() { const [products, setProducts] = (0, react_1.useState)([]); const [total, setTotal] = (0, react_1.useState)(0); const [page, setPage] = (0, react_1.useState)(1); const [limit, setLimit] = (0, react_1.useState)(20); const [isLoading, setIsLoading] = (0, react_1.useState)(false); const [error, setError] = (0, react_1.useState)(null); const loadProducts = (0, react_1.useCallback)(async (pageNum = 1, limitNum = 20) => { setIsLoading(true); setError(null); try { const result = await (0, product_1.getProducts)(pageNum, limitNum); setProducts(result.data); setTotal(result.total); setPage(result.page); setLimit(result.limit); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Failed to load products'; setError(errorMessage); } finally { setIsLoading(false); } }, []); const loadProductsByCategory = (0, react_1.useCallback)(async (categorySlug, pageNum = 1, limitNum = 20) => { setIsLoading(true); setError(null); try { const result = await (0, product_1.getProductsByCategorySlug)(categorySlug, pageNum, limitNum); setProducts(result.data); setTotal(result.total); setPage(result.page); setLimit(result.limit); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Failed to load products by category'; setError(errorMessage); } finally { setIsLoading(false); } }, []); // Load products on mount (0, react_1.useEffect)(() => { loadProducts(); }, [loadProducts]); const hasNextPage = page * limit < total; const hasPreviousPage = page > 1; return { products, total, page, limit, isLoading, error, loadProducts, loadProductsByCategory, hasNextPage, hasPreviousPage, }; } function useProductDetail() { const [product, setProduct] = (0, react_1.useState)(null); const [isLoading, setIsLoading] = (0, react_1.useState)(false); const [error, setError] = (0, react_1.useState)(null); const loadProduct = (0, react_1.useCallback)(async (productId) => { setIsLoading(true); setError(null); try { const productData = await (0, product_1.getProductById)(productId); setProduct(productData); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Failed to load product'; setError(errorMessage); } finally { setIsLoading(false); } }, []); return { product, isLoading, error, loadProduct, }; }