fix(ui): показывать свежесть срезов Firewall

This commit is contained in:
Denozordec committed 2026-09-30 11:04:57 +07:00
1 parent c2159508d5
commit 4b01f20558
6 files changed
+118 -4

No files matched your search

+14
View File
@@ -0,0 +1,14 @@
import { matchesFirewallFailure, type FirewallFailure } from "./firewall-response"
export type FirewallSliceTime = { serverId: string; family: "ip" | "ip6"; table: string; receivedAt: string | null }
export function updateFirewallSliceTimes(previous: FirewallSliceTime[], serverIds: string[], failures: FirewallFailure[], receivedAt: string): FirewallSliceTime[] {
return serverIds.flatMap(serverId => (["ip", "ip6"] as const).flatMap(family => ["filter", "nat", "mangle", "raw", "address-list"].map(table => {
const slice = { serverId, family, table }
const old = previous.find(row => row.serverId === serverId && row.family === family && row.table === table)
return { ...slice, receivedAt: failures.some(f => matchesFirewallFailure(f, slice)) ? old?.receivedAt ?? null : receivedAt }
})))
}
export function firewallTimeRange(slices: FirewallSliceTime[]) {
const times = slices.flatMap(slice => slice.receivedAt ? [slice.receivedAt] : []).sort()
return { oldest: times[0], newest: times.at(-1), unknown: slices.filter(slice => !slice.receivedAt).length }
}