"use client" import { useState } from "react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Loader2, X } from "lucide-react" import { toast } from "react-hot-toast" import api from "@/lib/api" interface MetaMaskEmailModalProps { isOpen: boolean walletAddress: string token: string onSuccess: (user: any) => void onCancel: () => void } export function MetaMaskEmailModal({ isOpen, walletAddress, token, onSuccess, onCancel, }: MetaMaskEmailModalProps) { const [email, setEmail] = useState("") const [name, setName] = useState("") const [isSubmitting, setIsSubmitting] = useState(false) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!email.trim()) { toast.error("Please enter your email address") return } if (!/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(email)) { toast.error("Please enter a valid email address") return } setIsSubmitting(true) try { const response = await api.post( "/api/auth/metamask/add-email", { email: email.toLowerCase(), name: name.trim(), }, { headers: { Authorization: `Bearer ${token}`, }, } ) if (response.data.success && response.data.user) { toast.success("Email saved successfully!") onSuccess(response.data.user) } else { toast.error(response.data.error || "Failed to save email") } } catch (error: any) { console.error("Error saving email:", error) toast.error( error.response?.data?.error || "Failed to save email address" ) } finally { setIsSubmitting(false) } } if (!isOpen) return null return (
Save Contact Email

Connected wallet: {walletAddress.slice(0, 6)}...{walletAddress.slice(-4)}

Add your contact email and name to complete your profile setup.

setName(e.target.value)} placeholder="Enter your name" disabled={isSubmitting} />
setEmail(e.target.value)} placeholder="Enter your email address" disabled={isSubmitting} required />

We will use this to verify your account and send important updates

) }