import React, { useEffect, useState } from 'react'; import { X, Copy, Check } from 'lucide-react'; import { TauriAPI } from '../api/tauri'; import '../styles/QRCodeDialog.css'; interface QRCodeDialogProps { url: string; isOpen: boolean; onClose: () => void; } export const QRCodeDialog: React.FC = ({ url, isOpen, onClose }) => { const [qrCodeData, setQrCodeData] = useState(''); const [copied, setCopied] = useState(false); const [loading, setLoading] = useState(false); useEffect(() => { if (isOpen && url) { setLoading(true); TauriAPI.generateQRCode(url) .then((base64) => { setQrCodeData(`data:image/png;base64,${base64}`); }) .catch((error) => { console.error('Failed to generate QR code:', error); }) .finally(() => { setLoading(false); }); } }, [isOpen, url]); const handleCopy = async () => { try { await navigator.clipboard.writeText(url); setCopied(true); setTimeout(() => setCopied(false), 2000); } catch (error) { console.error('Failed to copy URL:', error); } }; if (!isOpen) return null; return (

扫码在移动设备上预览

{loading ? (
生成二维码中...
) : qrCodeData ? ( QR Code ) : (
生成失败
)}

确保手机和电脑在同一局域网内

); }; export default QRCodeDialog;