'use client' import { useState, useEffect } from 'react' import { useAllauthAPI } from '../../contexts/APIContext' import { useStyles } from '../../contexts/StylesContext' import { useDjangoFormCore } from 'mizan' import { SettingsSection, SettingsItem, SettingsList, Badge, Button } from './SettingsComponents' interface Email { email: string primary: boolean verified: boolean } export function EmailsSection() { const api = useAllauthAPI() const styles = useStyles() const [emails, setEmails] = useState([]) const [loading, setLoading] = useState(true) const addEmailForm = useDjangoFormCore>({ name: 'add_email' }) const fetchEmails = async () => { const res = await api.account.emails.list() if (res.status === 200 && res.data) { setEmails(res.data) } setLoading(false) } useEffect(() => { fetchEmails() }, []) const handleAdd = async (e: React.FormEvent) => { e.preventDefault() const result = await addEmailForm.submit() if (result.success) { addEmailForm.reset() fetchEmails() } } const handleRemove = async (email: string) => { if (!confirm(`Remove ${email}?`)) return await api.account.emails.remove(email) fetchEmails() } const handleSetPrimary = async (email: string) => { await api.account.emails.setPrimary(email) fetchEmails() } const handleResendVerification = async (email: string) => { await api.account.emails.verification.dispatch(email) alert('Verification email sent!') } if (loading) return null return ( {emails.map(email => ( {email.email} {email.primary && Primary} {!email.verified && Unverified} } actions={ <> {!email.verified && ( )} {!email.primary && email.verified && ( )} {!email.primary && ( )} } /> ))} {!addEmailForm.loading && (
addEmailForm.set('email', e.target.value)} onBlur={() => addEmailForm.touch('email')} className={styles.fieldInput} required /> {addEmailForm.getFieldErrors('email').map((err, i) => (

{err.message}

))}
)}
) }