UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

68 lines (67 loc) • 2.41 kB
import { createCacheConfig } from "../shared/cache-config.js"; import { createSimpleListDetailHooks } from "../shared/simple-list-detail-hooks.js"; import { createOrderQueryKeys } from "./query-keys.js"; import { createOrderQueryOptionsFactory } from "./query-options.js"; function createOrderHooks({ service, buildListParams, buildDetailParams, queryKeys, queryKeyNamespace = "storefront-data", cacheConfig, defaultPageSize = 20 }) { const resolvedCacheConfig = cacheConfig ?? createCacheConfig(); const resolvedQueryKeys = queryKeys ?? createOrderQueryKeys(queryKeyNamespace); const buildList = buildListParams ?? ((input)=>input); const buildDetail = buildDetailParams ?? ((input)=>input); const { getListQueryOptions, getDetailQueryOptions } = createOrderQueryOptionsFactory({ service, buildListParams: buildList, buildDetailParams: buildDetail, queryKeys: resolvedQueryKeys, cacheConfig: resolvedCacheConfig }); const simpleHooks = createSimpleListDetailHooks({ buildList, buildDetail, getListItems: (data)=>data?.orders ?? [], getList: service.getOrders, getDetail: service.getOrder, getListQueryOptions, getDetailQueryOptions, resolvedCacheConfig, resolvedQueryKeys, defaultPageSize, defaultCacheStrategy: "userData" }); function useOrders(input, options) { const { items, ...result } = simpleHooks.useList(input, options); return { ...result, orders: items }; } function useSuspenseOrders(input, options) { const { items, ...result } = simpleHooks.useSuspenseList(input, options); return { ...result, orders: items }; } function useOrder(input, options) { const { item, ...result } = simpleHooks.useDetail(input, options); return { ...result, order: item }; } function useSuspenseOrder(input, options) { const { item, ...result } = simpleHooks.useSuspenseDetail(input, options); return { ...result, order: item }; } return { getListQueryOptions, getDetailQueryOptions, useOrders, useSuspenseOrders, useOrder, useSuspenseOrder }; } export { createOrderHooks };