expria-frontend/src/features/progression/hooks/usePatterns.ts

31 lines
1.1 KiB
TypeScript

/**
* Hook TanStack Query — analyse des patterns (Premium).
*
* Clé `['users', 'patterns']` partagée entre `/progression` et la section
* dashboard Premium — un seul appel backend pour les deux affichages.
*
* `staleTime: 60 s` — l'analyse ne change que quand une nouvelle production est
* corrigée ; 60 s évite les rafraîchissements inutiles.
*
* `enabled` : ne lance la requête QUE si l'utilisateur a la feature. Évite un
* 403 parasite pour Free/Standard (la route backend refuse avec
* PLAN_INSUFFICIENT — on court-circuite côté client).
*
* Règle H : aucune logique métier ici — wrap pur autour de `getPatterns`.
* Règle D : le check feature utilise `hasAccess`, jamais `plan === 'premium'`.
*/
import { useQuery } from '@tanstack/react-query'
import { getPatterns } from '@/entities/patterns/api'
import { hasAccess, type Plan } from '@/entities/user/lib'
export function usePatterns(plan: Plan | undefined) {
const enabled = plan !== undefined && hasAccess(plan, 'pattern_analysis')
return useQuery({
queryKey: ['users', 'patterns'] as const,
queryFn: getPatterns,
staleTime: 60 * 1000,
enabled,
})
}