import { useEffect, useRef, useState } from 'react';
import QRCode from 'qrcode';

interface ReceiveModalProps {
  addresses: string[];
  onClose: () => void;
}

export default function ReceiveModal({ addresses, onClose }: ReceiveModalProps) {
  const canvasRef = useRef<HTMLCanvasElement>(null);
  const [selectedAddr, setSelectedAddr] = useState(addresses[0] || '');

  const showToast = (msg: string) => {
    const t = document.createElement('div');
    t.className = 'toast';
    t.textContent = msg;
    document.body.appendChild(t);
    setTimeout(() => t.remove(), 2000);
  };

  const copyToClipboard = (text: string) => {
    navigator.clipboard.writeText(text).then(() => showToast('Address copied!'));
  };

  useEffect(() => {
    if (canvasRef.current && selectedAddr) {
      QRCode.toCanvas(canvasRef.current, selectedAddr, {
        width: 200,
        margin: 2,
        color: {
          dark: '#0f1117',
          light: '#ffffff',
        },
      }).catch(console.error);
    }
  }, [selectedAddr]);

  useEffect(() => {
    if (addresses.length > 0 && !addresses.includes(selectedAddr)) {
      setSelectedAddr(addresses[0]);
    }
  }, [addresses, selectedAddr]);

  return (
    <div className="modal-overlay" onClick={e => { if (e.target === e.currentTarget) onClose(); }}>
      <div className="modal" style={{ maxWidth: '440px' }}>
        <div className="modal-header">
          <h3 className="modal-title">Receive Bitcoin</h3>
          <button className="modal-close" onClick={onClose}>✕</button>
        </div>
        <div className="modal-body">
          <div className="qr-container">
            <div className="qr-canvas-wrapper">
              <canvas ref={canvasRef} />
            </div>

            {addresses.length > 1 && (
              <select
                className="input"
                value={selectedAddr}
                onChange={e => setSelectedAddr(e.target.value)}
                style={{ maxWidth: '320px' }}
              >
                {addresses.map(a => (
                  <option key={a} value={a}>{a.slice(0, 12)}…{a.slice(-8)}</option>
                ))}
              </select>
            )}

            <div
              className="qr-address"
              onClick={() => copyToClipboard(selectedAddr)}
              title="Click to copy"
            >
              {selectedAddr}
            </div>

            <p style={{ fontSize: '12px', color: 'var(--text-tertiary)', marginTop: '8px' }}>
              Tap the address to copy
            </p>
          </div>
        </div>
      </div>
    </div>
  );
}