import { queryOptions } from '@tanstack/react-query'; import { getAccountCustomer, getSessionCustomer, } from '@/server/account.functions'; // The customer token lives in an httpOnly cookie, so account state always comes // from the server (server functions here; mutations via src/server/account.ts). export type SessionCustomer = NonNullable< Awaited> >; /** Every account query shares this prefix, so sign-in/out can reset them all. */ export const ACCOUNT_QUERY_KEY = ['account'] as const; export const sessionQueryOptions = () => queryOptions({ queryKey: [...ACCOUNT_QUERY_KEY, 'me'], // A failed probe reads as signed out. queryFn: () => getSessionCustomer().catch(() => null), }); export const customerQueryOptions = () => queryOptions({ queryKey: [...ACCOUNT_QUERY_KEY, 'customer'], queryFn: () => getAccountCustomer(), // Orders should reflect a purchase made a moment ago. staleTime: 0, });