Fondations data plan utilisateur pour le dashboard conditionnel :
- entities/user/types.ts : interface PlanStatus (plan, permissions, simulations_used/remaining, plan_expires_at)
- entities/user/api.ts : getPlanStatus() via apiFetch<PlanStatus>('/plans/status')
- features/dashboard/hooks/usePlan.ts : useQuery + PLAN_QUERY_KEY + staleTime 5 min
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
24 lines
782 B
TypeScript
24 lines
782 B
TypeScript
/**
|
|
* Hook TanStack Query sur le statut du plan utilisateur.
|
|
*
|
|
* Source unique de vérité côté frontend pour `plan`, `permissions`, et
|
|
* compteurs de simulations. Consommé par `DashboardPage`, les gardes de
|
|
* permission dans les pages simulations/t2-live, et le router.
|
|
*
|
|
* `staleTime: 5 min` — le plan change peu (upgrade Stripe, expiration). Les
|
|
* flux d'upgrade appellent `queryClient.invalidateQueries(['plan'])` pour
|
|
* forcer un refetch immédiat après webhook.
|
|
*/
|
|
|
|
import { useQuery } from '@tanstack/react-query'
|
|
import { getPlanStatus } from '@/entities/user/api'
|
|
|
|
export const PLAN_QUERY_KEY = ['plan'] as const
|
|
|
|
export function usePlan() {
|
|
return useQuery({
|
|
queryKey: PLAN_QUERY_KEY,
|
|
queryFn: getPlanStatus,
|
|
staleTime: 5 * 60 * 1000,
|
|
})
|
|
}
|