import React, { useState, useEffect } from 'react'; import { RefreshCw, Check, X, Send, Edit, Copy } from 'lucide-react'; import axios from 'axios'; import { API_BASE_URL } from '../config'; const GeneratorView = ({ uploadData }) => { const [generatedEmails, setGeneratedEmails] = useState([]); const [selectedEmailIndex, setSelectedEmailIndex] = useState(0); const [loading, setLoading] = useState(false); const [sending, setSending] = useState(false); useEffect(() => { if (uploadData && generatedEmails.length === 0) { generateEmails(); } }, [uploadData]); const generateEmails = async () => { setLoading(true); try { const res = await axios.post(`${API_BASE_URL}/generate-emails`, { resume_filename: uploadData.resume_filename, excel_filename: uploadData.excel_filename }); setGeneratedEmails(res.data.emails); } catch (e) { console.error(e); alert("Error generating emails"); } finally { setLoading(false); } }; const handleSendCurrent = async () => { // Logic to send single email or push to queue if (!uploadData.smtpEmail || !uploadData.smtpPassword) { alert("Missing SMTP Credentials. Go back to Upload."); return; } const current = generatedEmails[selectedEmailIndex]; setSending(true); try { const payload = { emails: [{ to: current.hr_email, subject: current.email.split('\n')[0].replace("Subject: ", ""), // Simple extraction body: current.email }], smtp_email: uploadData.smtpEmail, smtp_password: uploadData.smtpPassword, resume_filename: uploadData.resume_filename // Pass filename for attachment }; await axios.post(`${API_BASE_URL}/send-bulk-emails`, payload); alert(`Email sent to ${current.company}`); } catch (e) { console.error(e); alert("Sending failed."); } finally { setSending(false); } }; if (!uploadData) return (
No data loaded. Please start from Upload page.
); return (
{/* Left: List */}

Candidates ({generatedEmails.length})

{loading ? (
AI is brainstorming...
) : generatedEmails.map((item, idx) => (
setSelectedEmailIndex(idx)} className={`p-4 rounded-xl cursor-pointer border transition-all ${selectedEmailIndex === idx ? 'bg-indigo-50 border-indigo-200' : 'bg-transparent border-transparent hover:bg-slate-50'}`} >

{item.company}

95%

{item.hr_email}

))}
{/* Right: Preview */}
{generatedEmails.length > 0 && ( <>

Subject

{generatedEmails[selectedEmailIndex].email.split('\n')[0].replace("Subject: ", "")}

{generatedEmails[selectedEmailIndex].email}
)}
); }; export default GeneratorView;