import React, { useState } from 'react'; import { usePezkuwi } from '@/contexts/PezkuwiContext'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Copy, CheckCircle, QrCode } from 'lucide-react'; import { useToast } from '@/hooks/use-toast'; import QRCode from 'qrcode'; interface ReceiveModalProps { isOpen: boolean; onClose: () => void; } export const ReceiveModal: React.FC = ({ isOpen, onClose }) => { const { selectedAccount } = usePezkuwi(); const { toast } = useToast(); const [copied, setCopied] = useState(false); const [qrCodeDataUrl, setQrCodeDataUrl] = useState(''); React.useEffect(() => { if (selectedAccount && isOpen) { // Generate QR code QRCode.toDataURL(selectedAccount.address, { width: 300, margin: 2, color: { dark: '#ffffff', light: '#0f172a' } }).then(setQrCodeDataUrl).catch((err) => { if (import.meta.env.DEV) console.error('QR code generation failed:', err); }); } }, [selectedAccount, isOpen]); const handleCopyAddress = async () => { if (!selectedAccount) return; try { await navigator.clipboard.writeText(selectedAccount.address); setCopied(true); toast({ title: "Address Copied!", description: "Your wallet address has been copied to clipboard", }); setTimeout(() => setCopied(false), 2000); } catch { toast({ title: "Copy Failed", description: "Failed to copy address to clipboard", variant: "destructive", }); } }; if (!selectedAccount) { return null; } return ( Receive Tokens Share this address to receive HEZ, PEZ, and other tokens
{/* QR Code */}
{qrCodeDataUrl ? ( QR Code ) : (
)}
{/* Account Name */}
Account Name
{selectedAccount.meta.name || 'Unnamed Account'}
{/* Address */}
Wallet Address
{selectedAccount.address}
{/* Warning */}

Important: Only send PezkuwiChain compatible tokens to this address. Sending other tokens may result in permanent loss.

); };