const { useState, useEffect } = React; function EmailQueue({ user }) { const [drafts, setDrafts] = useState([]); const [loading, setLoading] = useState(true); const [filter, setFilter] = useState('pending_approval'); const isPrincipal = user.role === 'principal'; useEffect(() => { loadDrafts(); // Refresh every 30 seconds const interval = setInterval(loadDrafts, 30000); return () => clearInterval(interval); }, [filter]); const loadDrafts = async () => { try { const url = filter ? `/api/email-drafts?status=${filter}` : '/api/email-drafts'; const res = await fetch(url); const data = await res.json(); setDrafts(data); setLoading(false); } catch (err) { console.error('Error loading drafts:', err); setLoading(false); } }; const approveDraft = async (draftId) => { try { const res = await fetch(`/api/email-drafts/${draftId}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ new_status: 'approved' }), }); alert('Email approved. Now ready to send.'); loadDrafts(); } catch (err) { alert('Error approving draft: ' + err.message); } }; const sendDraft = async (draftId) => { try { // In a real implementation, this would call Gmail API to send const res = await fetch(`/api/email-drafts/${draftId}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ new_status: 'sent' }), }); alert('Email sent and logged.'); loadDrafts(); } catch (err) { alert('Error sending draft: ' + err.message); } }; if (loading) return
Loading email queue...
; return (

Email Queue

{/* Filter Tabs */}
{/* Drafts List */}
{drafts.length === 0 ? (

No drafts in this status

) : ( drafts.map(draft => (
{draft.subject}
To: {draft.full_name} • Draft by {draft.created_by}
{draft.body}
{draft.status} {draft.status === 'pending_approval' && isPrincipal && (
)} {draft.status === 'approved' && isPrincipal && ( )}
)) )}
); }