UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

38 lines (37 loc) • 1.62 kB
import { useQuery } from "@tanstack/react-query"; import { createCacheConfig } from "../shared/cache-config.js"; import { toErrorMessage } from "../shared/error-utils.js"; import { createProductLocationAvailabilityQueryOptionsFactory } from "./query-options.js"; import { createProductLocationAvailabilityQueryKeys } from "./query-keys.js"; function createProductLocationAvailabilityHooks({ service, buildDetailParams, queryKeys, queryKeyNamespace = "storefront-data", cacheConfig }) { const resolvedCacheConfig = cacheConfig ?? createCacheConfig(); const resolvedQueryKeys = queryKeys ?? createProductLocationAvailabilityQueryKeys(queryKeyNamespace); const { getDetailQueryOptions } = createProductLocationAvailabilityQueryOptionsFactory({ service, buildDetailParams, queryKeys: resolvedQueryKeys, cacheConfig: resolvedCacheConfig }); function useProductLocationAvailability(input, options) { const enabled = input.enabled ?? Boolean(input.productId); const query = useQuery({ ...getDetailQueryOptions(input, { queryOptions: options?.queryOptions }), enabled }); return { productLocationAvailability: query.data ?? null, isLoading: query.isLoading, isFetching: query.isFetching, isSuccess: query.isSuccess, error: toErrorMessage(query.error), query }; } return { getDetailQueryOptions, useProductLocationAvailability }; } export { createProductLocationAvailabilityHooks };