import { useState } from 'react'
import { ChevronLeft, ChevronRight, Check, Copy, Play, Plus, Trash2, FolderX } from 'lucide-react'
import clsx from 'clsx'
export default function AccountsTable({
t,
accounts,
loadingAccounts,
testing,
testingAll,
batchProgress,
sessionCounts,
deletingSessions,
updatingProxy,
totalAccounts,
page,
pageSize,
totalPages,
resolveAccountIdentifier,
proxies,
onTestAll,
onShowAddAccount,
onTestAccount,
onDeleteAccount,
onDeleteAllSessions,
onUpdateAccountProxy,
onPrevPage,
onNextPage,
onPageSizeChange,
searchQuery,
onSearchChange,
envBacked = false,
}) {
const [copiedId, setCopiedId] = useState(null)
const copyId = (id) => {
navigator.clipboard.writeText(id).then(() => {
setCopiedId(id)
setTimeout(() => setCopiedId(null), 1500)
})
}
return (
{t('accountManager.accountsTitle')}
{t('accountManager.accountsDesc')}
{testingAll && batchProgress.total > 0 && (
{t('accountManager.testingAllAccounts')}
{batchProgress.current} / {batchProgress.total}
{batchProgress.results.length > 0 && (
{batchProgress.results.map((r, i) => (
{r.success ? '✓' : '✗'} {r.id}
))}
)}
)}
{loadingAccounts ? (
{t('actions.loading')}
) : accounts.length > 0 ? (
accounts.map((acc, i) => {
const id = resolveAccountIdentifier(acc)
const assignedProxy = proxies.find(proxy => proxy.id === acc.proxy_id)
const runtimeUnknown = envBacked && !acc.test_status
const isActive = acc.test_status === 'ok' || acc.has_token
return (
copyId(id)}
>
{id || '-'}
{copiedId === id
?
:
}
{acc.test_status === 'failed' ? t('accountManager.testStatusFailed') : isActive ? t('accountManager.sessionActive') : runtimeUnknown ? t('accountManager.runtimeStatusUnknown') : t('accountManager.reauthRequired')}
{acc.token_preview && (
{acc.token_preview}
)}
{sessionCounts && sessionCounts[id] !== undefined && (
{t('accountManager.sessionCount', { count: sessionCounts[id] })}
)}
{sessionCounts && sessionCounts[id] !== undefined && sessionCounts[id] > 0 && (
)}
{acc.proxy_id && (
{t('accountManager.proxyBadge', { name: assignedProxy ? (assignedProxy.name || `${assignedProxy.host}:${assignedProxy.port}`) : acc.proxy_id })}
)}
)
})
) : (
{searchQuery ? t('accountManager.searchNoResults') : t('accountManager.noAccounts')}
)}
{totalPages > 1 && (
{t('accountManager.pageInfo', { current: page, total: totalPages, count: totalAccounts })}
{page} / {totalPages}
)}
)
}