UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

38 lines (37 loc) • 1.52 kB
import { useQuery } from "@tanstack/react-query"; import { createCacheConfig } from "../shared/cache-config.js"; import { toErrorMessage } from "../shared/error-utils.js"; import { createProductAttributeQueryKeys } from "./query-keys.js"; import { createProductAttributeQueryOptionsFactory } from "./query-options.js"; function createProductAttributeHooks({ service, buildDetailParams, queryKeys, queryKeyNamespace = "storefront-data", cacheConfig }) { const resolvedCacheConfig = cacheConfig ?? createCacheConfig(); const resolvedQueryKeys = queryKeys ?? createProductAttributeQueryKeys(queryKeyNamespace); const { getDetailQueryOptions } = createProductAttributeQueryOptionsFactory({ service, buildDetailParams, queryKeys: resolvedQueryKeys, cacheConfig: resolvedCacheConfig }); function useProductAttributes(input, options) { const enabled = input.enabled ?? Boolean(input.productId); const query = useQuery({ ...getDetailQueryOptions(input, { queryOptions: options?.queryOptions }), enabled }); return { productAttributes: query.data ?? [], isLoading: query.isLoading, isFetching: query.isFetching, isSuccess: query.isSuccess, error: toErrorMessage(query.error), query }; } return { getDetailQueryOptions, useProductAttributes }; } export { createProductAttributeHooks };