import React, { memo } from 'react'; export type GeIdItem = { key: string; id: string; lang: string; status: 'waiting' | 'processing' | 'done' | 'error'; usernames?: string; }; interface QueueStatusProps { currentSubmission: { username: string; geIdAndLang: string } | null; queueItems: GeIdItem[]; pendingSubmissionsCount?: number; onOpenQueueModal: () => void; } const getStatusStyles = (status: GeIdItem['status']) => { switch (status) { case 'processing': return 'bg-amber-500/20 text-amber-300 border-amber-500/30'; case 'done': return 'bg-green-500/20 text-green-300 border-green-500/30'; case 'error': return 'bg-rose-500/20 text-rose-300 border-rose-500/30'; case 'waiting': default: return 'bg-slate-700/50 text-slate-400 border-slate-600'; } }; const QueueStatus: React.FC = ({ currentSubmission, queueItems, pendingSubmissionsCount = 0, onOpenQueueModal }) => { // derive usernames from queueItems when available; fallback to currentSubmission const derivedUsernames = (() => { if (queueItems && queueItems.length > 0) { const all = queueItems.flatMap(i => (i.usernames || '').split('\n').map(s => s.trim()).filter(Boolean)); return Array.from(new Set(all)); } if (currentSubmission) return currentSubmission.username.split('\n').map(s => s.trim()).filter(Boolean); return []; })(); const userCount = derivedUsernames.length; const geIdCount = queueItems.length; // Show details only when there are queue items available (currently processing submission) const showDetails = geIdCount > 0; return (

Hàng đợi và Trạng thái

Submit đang chờ: {pendingSubmissionsCount}
{showDetails ? (

Username ({userCount})

{derivedUsernames.join('\n')}

GE ID & Lang ({geIdCount})

{queueItems.map(item => ( ))}
) : (

Không có submit nào đang được xử lý.

)}
); }; export default memo(QueueStatus);