import { useEffect, useState } from 'react' import { Link } from 'react-router-dom' import { ChevronLeft, RefreshCw, RotateCcw } from 'lucide-react' import { api } from '../../api/client' interface BandwidthAccount { id: number username: string domain: string status: string bandwidthUsedMb: number package?: { name: string; bandwidthMb: number } } export default function ResetBandwidth() { const [items, setItems] = useState([]) const [loading, setLoading] = useState(false) const [resetting, setResetting] = useState>(new Set()) const [resetAll, setResetAll] = useState(false) const fetchData = async () => { setLoading(true) try { const r = await api.get('/nixserver/accounts/bandwidth') setItems(r.data.data) } finally { setLoading(false) } } useEffect(() => { fetchData() }, []) const handleReset = async (id: number) => { setResetting(prev => new Set(prev).add(id)) try { await api.post(`/nixserver/accounts/${id}/reset-bandwidth`) setItems(prev => prev.map(a => a.id === id ? { ...a, bandwidthUsedMb: 0 } : a)) } catch (e: unknown) { alert((e as { response?: { data?: { error?: string } } })?.response?.data?.error ?? 'Reset failed') } finally { setResetting(prev => { const s = new Set(prev); s.delete(id); return s }) } } const handleResetAll = async () => { if (!confirm(`Reset bandwidth for all ${items.length} accounts?`)) return setResetAll(true) try { await Promise.all(items.map(a => api.post(`/nixserver/accounts/${a.id}/reset-bandwidth`))) setItems(prev => prev.map(a => ({ ...a, bandwidthUsedMb: 0 }))) } catch (e: unknown) { alert((e as { response?: { data?: { error?: string } } })?.response?.data?.error ?? 'Bulk reset failed') } finally { setResetAll(false) } } return (
Accounts / Reset Account Bandwidth Limit

Reset Account Bandwidth Limit

Reset bandwidth counters for individual accounts or all at once.

{['Username', 'Domain', 'Bandwidth Used', 'Limit', 'Status', ''].map(h => ( ))} {loading && ( )} {!loading && items.map(acc => ( ))} {!loading && items.length === 0 && ( )}
{h}
Loading...
{acc.username} {acc.domain} {acc.bandwidthUsedMb.toLocaleString()} MB {acc.package?.bandwidthMb ? `${acc.package.bandwidthMb.toLocaleString()} MB` : '—'} {acc.status}
No accounts found
) }