@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
38 lines (37 loc) • 1.62 kB
JavaScript
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 };