import { useCallback, useState } from 'react'; import { Email } from '../services/email.service'; import { SendEmailOptions, EmailResult, EmailError, EmailProvider } from '../types'; export function useEmail(emailService: Email) { const [sending, setSending] = useState(false); const [error, setError] = useState(null); const [lastResult, setLastResult] = useState(null); const send = useCallback(async >( options: SendEmailOptions ): Promise => { setSending(true); setError(null); try { const result = await emailService.send(options); setLastResult(result); return result; } catch (err: any) { const emailError: EmailError = { code: err.code || 'email/send-failed', message: err.message || 'Failed to send email', provider: 'resend' as EmailProvider, originalError: err, }; setError(emailError); throw emailError; } finally { setSending(false); } }, [emailService]); const sendBatch = useCallback(async >( options: any ) => { setSending(true); setError(null); try { const result = await emailService.sendBatch(options); return result; } catch (err: any) { const emailError: EmailError = { code: err.code || 'email/batch-failed', message: err.message || 'Failed to send batch emails', provider: 'resend' as EmailProvider, originalError: err, }; setError(emailError); throw emailError; } finally { setSending(false); } }, [emailService]); return { send, sendBatch, sending, error, lastResult, }; }