31 lines
1.1 KiB
TypeScript
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,
|
|
})
|
|
}
|