feat(ui): client-realtime-speed (#5687)

* refactor(inbounds): extract TRAFFIC_POLL_INTERVAL_S to shared util

* feat(clients): derive per-client live speed from traffic WebSocket deltas

* feat(clients): render speed column and mobile card line

* i18n(clients): add pages.clients.speed key to all 13 locales
This commit is contained in:
Nikan Zeyaei
2026-07-05 02:27:03 +03:30
committed by GitHub
parent e11e587c60
commit b177e30714
19 changed files with 93 additions and 6 deletions
@@ -0,0 +1,26 @@
import { Tag } from 'antd';
import { SizeFormatter } from '@/utils';
import type { ClientSpeedEntry } from '@/hooks/useClients';
export type { ClientSpeedEntry };
export function isActiveSpeed(speed?: ClientSpeedEntry): speed is ClientSpeedEntry {
return !!speed && (speed.up > 0 || speed.down > 0);
}
interface ClientSpeedTagProps {
speed: ClientSpeedEntry;
}
export function ClientSpeedTag({ speed }: ClientSpeedTagProps) {
return (
<Tag color="blue">
{SizeFormatter.speedFormat(speed.up)}
{' / '}
{SizeFormatter.speedFormat(speed.down)}
</Tag>
);
}
export default ClientSpeedTag;