Refine users table and reconnect handling

This commit is contained in:
2026-04-02 03:14:49 +03:00
parent 2602fab6a7
commit 49b41edcb0
10 changed files with 308 additions and 73 deletions

View File

@@ -11,7 +11,12 @@ export async function getDashboardSnapshot(
const state = await store.read();
const previewConfig = render3proxyConfig(state, runtimePaths);
const traffic = await readObservedTraffic(runtimePaths, state.userRecords);
const observedUsers = deriveObservedUsers(state.userRecords, traffic.userBytesByName, traffic.recentUsers);
const observedUsers = deriveObservedUsers(
state.userRecords,
traffic.userBytesByName,
traffic.lastSeenByName,
traffic.recentUsers,
);
const observed: ObservedRuntimeState = {
totalBytes: traffic.totalBytes,
liveConnections: traffic.liveConnections,
@@ -26,14 +31,17 @@ export async function getDashboardSnapshot(
function deriveObservedUsers(
users: ProxyUserRecord[],
userBytesByName: Map<string, number>,
lastSeenByName: Map<string, string | null>,
recentUsers: Set<string>,
): ProxyUserRecord[] {
return users.map((user) => {
const usedBytes = userBytesByName.get(user.username) ?? 0;
const lastSeenAt = lastSeenByName.get(user.username) ?? null;
if (user.paused) {
return {
...user,
lastSeenAt,
usedBytes,
status: 'idle',
};
@@ -42,6 +50,7 @@ function deriveObservedUsers(
if (user.quotaBytes !== null && usedBytes >= user.quotaBytes) {
return {
...user,
lastSeenAt,
usedBytes,
status: 'fail',
};
@@ -50,6 +59,7 @@ function deriveObservedUsers(
if (user.quotaBytes !== null && user.quotaBytes > 0 && usedBytes / user.quotaBytes >= 0.8) {
return {
...user,
lastSeenAt,
usedBytes,
status: recentUsers.has(user.username) ? 'live' : 'warn',
};
@@ -57,6 +67,7 @@ function deriveObservedUsers(
return {
...user,
lastSeenAt,
usedBytes,
status: recentUsers.has(user.username) ? 'live' : 'idle',
};