Files
vite-shopify-storefront/src/hooks/use-account.ts
T
Rami BitarandClaude Opus 5.5 160e65f0ed Migrate to TanStack Start and pin the Vercel preset
Vercel auto-detected the Hydrogen preset from the @shopify/hydrogen
dependency and failed building a 'hydrogen' Edge Function. The app is now
TanStack Start (SSR via Nitro), and vercel.json pins the tanstack-start
preset and installs with Corepack so Yarn 4 is used.

- Router factory with per-request QueryClient and SSR query dehydration
- Hono API mounted as a Start server route at /api/*
- Account reads in loaders go through server functions (cookies on SSR)
- Loaders prefetch listing pages so products are in the server HTML
- Add graphql peer dependency for gql.tada

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 11:35:35 -04:00

31 lines
986 B
TypeScript

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<ReturnType<typeof getSessionCustomer>>
>;
/** 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,
});