Fluxo de Dados
{results && ( CONCLUÍDO )}Processando Mensagens...
import React, { useState, useEffect } from 'react'; import { Mail, Calendar, Clock, Upload, CircleAlert, CircleCheckBig, Truck, LayoutDashboard, Key, ShieldCheck, FileSearch, Trash2, Loader2, Settings } from 'lucide-react'; import { useGrOps } from '../hooks/useGrOps'; import * as grService from '../services/grService'; import { useAuthContext } from '@/components/shared/AuthProvider'; import { toast } from 'sonner'; import { handleGrError } from '../utils/grErrorHandler'; const GrOutlookView = () => { const { userData } = useAuthContext(); const user = userData?.usuario || { username: '', email: '' }; const [dataCorte, setDataCorte] = useState(new Date().toISOString().split('T')[0]); const [assuntoFiltro, setAssuntoFiltro] = useState('NFe'); const [isProcessing, setIsProcessing] = useState(false); const [results, setResults] = useState(null); // Email Credentials State const [emailCred, setEmailCred] = useState(user.email || ''); const [passwordCred, setPasswordCred] = useState(''); const [isSavingCreds, setIsSavingCreds] = useState(false); // XML Validation State const [isValidating, setIsValidating] = useState(false); const [validationResult, setValidationResult] = useState(null); const handleSaveCredentials = async () => { if (!emailCred || !passwordCred) { toast.error("Preencha e-mail e senha"); return; } setIsSavingCreds(true); try { await grService.saveEmailCredentials(emailCred, passwordCred); toast.success("Credenciais salvas com sucesso"); setPasswordCred(''); } catch (error) { handleGrError(error, "Erro ao salvar credenciais"); } finally { setIsSavingCreds(false); } }; const handleProcessEmails = async () => { setIsProcessing(true); setResults(null); try { const resp = await grService.processEmails({ desde_data: dataCorte, assunto_filtro: assuntoFiltro, salvar_xmls: true }); setResults(resp); toast.success(`${resp.total_xmls} XMLs processados com sucesso`); } catch (error) { handleGrError(error, "Erro ao processar e-mails"); } finally { setIsProcessing(false); } }; const handleValidateXML = async (e) => { const file = e.target.files[0]; if (!file) return; setIsValidating(true); setValidationResult(null); try { const resp = await grService.validateXML(file); setValidationResult(resp); if (resp.valido) { toast.success("XML válido!"); } else { toast.error("XML inválido para o sistema"); } } catch (error) { handleGrError(error, "Erro ao validar XML"); } finally { setIsValidating(false); } }; return (
Ambiente Seguro de Processamento
Processando Mensagens...