import { useState, useEffect, useCallback } from 'react'; import { toast } from 'sonner'; import cnabService from '../services/cnabService'; /** * Hook customizado para gestão de favorecidos CNAB */ export const useFavorecidos = () => { const [favorecidos, setFavorecidos] = useState([]); const [loading, setLoading] = useState(true); const [selectedFavorecido, setSelectedFavorecido] = useState(null); const [searchTerm, setSearchTerm] = useState(''); /** * Carrega favorecidos iniciais */ const loadFavorecidos = useCallback(async () => { setLoading(true); try { const data = await cnabService.getFavorecidos(); setFavorecidos(data); } catch (error) { toast.error('Erro ao carregar favorecidos.'); } finally { setLoading(false); } }, []); useEffect(() => { loadFavorecidos(); }, [loadFavorecidos]); /** * Filtra favorecidos baseado no termo de busca */ const filteredFavorecidos = favorecidos.filter(f => f.nome.toLowerCase().includes(searchTerm.toLowerCase()) || f.documento.includes(searchTerm) || f.pix.toLowerCase().includes(searchTerm.toLowerCase()) ); const handleExport = () => { toast.success('Exportação iniciada para o formato Excel.'); }; const handleDelete = (id) => { setFavorecidos(prev => prev.filter(f => f.id !== id)); toast.success('Favorecido removido com sucesso.'); }; return { favorecidos: filteredFavorecidos, loading, searchTerm, setSearchTerm, selectedFavorecido, setSelectedFavorecido, handleExport, handleDelete, refresh: loadFavorecidos }; };