import { Button } from '@heroui/button'; import { Spinner } from '@heroui/spinner'; import { QRCodeSVG } from 'qrcode.react'; import { IoAlertCircle, IoRefresh } from 'react-icons/io5'; interface QrCodeLoginProps { qrcode: string; loginError?: string; onRefresh?: () => void; isRefreshing?: boolean; loginPhase?: string; isRecoveringLoginService?: boolean; } const QrCodeLogin: React.FC = ({ qrcode, loginError, onRefresh, isRefreshing = false, loginPhase, isRecoveringLoginService = false }) => { const transitionMessage = loginPhase === 'qrcode_scanned' ? '二维码已扫描,等待手机确认…' : loginPhase === 'initializing' ? 'QQ 登录成功,正在启动 SnowCat…' : loginPhase === 'reconnecting' || isRecoveringLoginService ? '正在重新连接 QQ 登录服务…' : undefined; return (
{(isRefreshing || transitionMessage) && (
{transitionMessage || '正在刷新二维码…'}
{transitionMessage ? '请不要关闭此页面,最长可能需要 3 分钟' : '正在等待新的二维码,最长 10 秒'}
)} {loginError && !qrcode && !isRecoveringLoginService ? (
登录失败
{loginError}
{onRefresh && ( )}
) : ( <> {loginError && (
{loginError}
)}
{!qrcode && (
)}
请使用 QQ 或 TIM 扫描上方二维码
{onRefresh && qrcode && ( )} )}
); }; export default QrCodeLogin;