import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { getCurrentUserId, pb } from '@/services/pocketbase'; import type { EtapePipelineRecord } from '@/types/collections'; const DEFAULT_ETAPES: { nom: string; ordre: number; couleur: string; is_terminal?: boolean }[] = [ { nom: 'Prospection', ordre: 1, couleur: '#64748B' }, { nom: 'Contact établi', ordre: 2, couleur: '#0EA5E9' }, { nom: 'Visite', ordre: 3, couleur: '#8B5CF6' }, { nom: 'Analyse', ordre: 4, couleur: '#F59E0B' }, { nom: 'Offre', ordre: 5, couleur: '#EC4899' }, { nom: 'Compromis', ordre: 6, couleur: '#10B981' }, { nom: 'Acte / acquisition', ordre: 7, couleur: '#16A34A', is_terminal: true }, ]; export function useEtapes() { const uid = getCurrentUserId(); const queryClient = useQueryClient(); const query = useQuery({ queryKey: ['etapes_pipeline', uid], queryFn: async () => { if (!uid) return [] as EtapePipelineRecord[]; const list = await pb.collection('etapes_pipeline').getFullList({ filter: `user="${uid}"`, sort: 'ordre', }); return list; }, enabled: Boolean(uid), }); const initMutation = useMutation({ mutationFn: async () => { if (!uid) throw new Error('Non connecté'); const existing = await pb.collection('etapes_pipeline').getFullList({ filter: `user="${uid}"`, }); if (existing.length > 0) return existing; for (const e of DEFAULT_ETAPES) { await pb.collection('etapes_pipeline').create({ user: uid, nom: e.nom, ordre: e.ordre, couleur: e.couleur, is_terminal: e.is_terminal ?? false, }); } return pb.collection('etapes_pipeline').getFullList({ filter: `user="${uid}"`, sort: 'ordre', }); }, onSuccess: () => { void queryClient.invalidateQueries({ queryKey: ['etapes_pipeline'] }); }, }); return { etapes: query.data ?? [], isLoading: query.isPending, error: query.error, initEtapesDefaut: initMutation.mutateAsync, initError: initMutation.error, isInitPending: initMutation.isPending, }; }