autumn-js
Version:
Autumn JS Library
57 lines (55 loc) • 1.45 kB
JavaScript
"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
};