UNPKG

autumn-js

Version:

Autumn JS Library

101 lines (98 loc) 2.92 kB
"use client"; "use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/libraries/react/hooks/useCustomerProvider.tsx var useCustomerProvider_exports = {}; __export(useCustomerProvider_exports, { useCustomerProvider: () => useCustomerProvider }); module.exports = __toCommonJS(useCustomerProvider_exports); var import_react = require("react"); function useCustomerProvider(client) { const [stateMap, setStateMap] = (0, import_react.useState)({}); const inProgressFetches = (0, import_react.useRef)({}); const getQueryKey = (params) => { return JSON.stringify(params || {}); }; const getState = (params) => { const queryKey = getQueryKey(params); if (!stateMap[queryKey]) { return { customer: null, isLoading: true, error: null }; } return stateMap[queryKey]; }; const refetch = async ({ params, errorOnNotFound = true }) => { const queryKey = getQueryKey(params); if (inProgressFetches.current[queryKey]) { return; } inProgressFetches.current[queryKey] = true; setStateMap((prevState) => ({ ...prevState, [queryKey]: { ...prevState[queryKey] || { customer: null }, isLoading: true, error: null } })); const { data, error } = await client.createCustomer({ expand: params?.expand, errorOnNotFound }); let newState = { customer: data, isLoading: false, error }; setStateMap((prevState) => ({ ...prevState, [queryKey]: newState })); inProgressFetches.current[queryKey] = false; }; const refetchFirstTwo = async () => { try { let batchRefetch = []; for (const key of Object.keys(stateMap)) { batchRefetch.push(refetch({ params: JSON.parse(key) })); } await Promise.all(batchRefetch); } catch (error) { console.error("Failed to refetch customer (useCustomerProvider)"); console.error(error); } }; return { // stateMap, getState, refetch, refetchFirstTwo }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { useCustomerProvider });