UNPKG

autumn-js

Version:

Autumn JS Library

57 lines (55 loc) 1.45 kB
"use client"; import { useEffect, useState } from "react"; import { useAutumnContext } from "../AutumnContext"; import { fetchPricingTableData } from "../clientUtils"; const mergeProductDetails = (products, productDetails) => { if (!products) { return null; } if (!productDetails) { return products; } let mergedProducts = structuredClone(products); for (const product of productDetails) { let index = mergedProducts.findIndex((p) => p.id === product.id); if (index == -1) { console.warn(`Product with id ${product.id} not found`); continue; } mergedProducts[index] = { ...mergedProducts[index], ...product }; } return mergedProducts; }; const usePricingTable = (options) => { const { encryptedCustomerId, pricingTableProducts, setPricingTableProducts } = useAutumnContext(); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); const fetchProducts = async () => { let returnData = null; returnData = await fetchPricingTableData({ setIsLoading, setError, setProducts: setPricingTableProducts, encryptedCustomerId }); return returnData; }; useEffect(() => { fetchProducts(); }, []); return { products: mergeProductDetails( pricingTableProducts, options?.productDetails ), isLoading, error, refetch: fetchProducts }; }; export { usePricingTable };