import type { HookFetcher } from '@commerce/utils/types' import type { SwrOptions } from '@commerce/utils/use-data' import useCommerceCustomer from '@commerce/use-customer' import getCustomerQuery from '@framework/utils/queries/get-customer-query' import { getCustomerToken } from '@framework/utils/customer-token' const defaultOpts = { query: getCustomerQuery, } export const fetcher: HookFetcher = async (options, _, fetch) => { const customerAccessToken = getCustomerToken() if (customerAccessToken) { const data = await fetch({ ...defaultOpts, ...options, variables: { customerAccessToken }, }) return data?.customer ?? null } return null } export function extendHook( customFetcher: typeof fetcher, swrOptions?: SwrOptions ) { const useCustomer = () => { return useCommerceCustomer(defaultOpts, [], customFetcher, { revalidateOnFocus: false, ...swrOptions, }) } useCustomer.extend = extendHook return useCustomer } export default extendHook(fetcher)