33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
/**
|
|
* Hook — suggestions d'idées DeepSeek pour prolonger une rédaction en cours.
|
|
*
|
|
* Tâche G5 : mutation sur POST /sujets/idees. Retourne les idées, l'état
|
|
* de chargement, l'erreur API et un `reset()` pour vider le cache de la
|
|
* mutation (appelé à la fermeture du modal côté composant).
|
|
*
|
|
* Règle H : aucune logique métier — la garde `hasAccess(plan, 'tips')`
|
|
* est appliquée dans SimulationForm (UX), jamais ici.
|
|
*/
|
|
|
|
import { useMutation } from '@tanstack/react-query'
|
|
import { getIdees } from '@/entities/report/api'
|
|
import type { ApiError } from '@/shared/types/api'
|
|
|
|
interface FetchIdeesVariables {
|
|
consigne: string
|
|
contenu: string
|
|
}
|
|
|
|
export function useIdees() {
|
|
const mutation = useMutation<string[], ApiError, FetchIdeesVariables>({
|
|
mutationFn: ({ consigne, contenu }) => getIdees(consigne, contenu),
|
|
})
|
|
|
|
return {
|
|
idees: mutation.data ?? null,
|
|
isLoading: mutation.isPending,
|
|
error: mutation.error as ApiError | null,
|
|
fetchIdees: (variables: FetchIdeesVariables) => mutation.mutate(variables),
|
|
reset: mutation.reset,
|
|
}
|
|
}
|