fix: honor Komodo health and prefer fresh telemetry across fleet status
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { parseServerName, zombieMapBySlug } from './map-aliases.js';
|
||||
import { freshTelemetry, type GameObservation } from './server-observation.js';
|
||||
import { freshStatusTimestamp } from './server-freshness.js';
|
||||
import type { ZombieGame } from './map-aliases.js';
|
||||
import type { GameTelemetry } from './telemetry.js';
|
||||
@@ -6,6 +7,13 @@ import type { Health, RosterPlayer } from './ui/stores/servers.js';
|
||||
import { mapTitle, serverTitle } from './ui/server-labels.js';
|
||||
|
||||
export interface FleetServer {
|
||||
container_state?: string | null;
|
||||
container_checked_at?: string | null;
|
||||
last_checked_at?: string | null;
|
||||
telemetry_after?: string | null;
|
||||
rcon_status?: GameObservation;
|
||||
telemetry?: GameTelemetry;
|
||||
status_source?: 'telemetry' | 'rcon' | null;
|
||||
name: string;
|
||||
game: string | null;
|
||||
map: string | null;
|
||||
@@ -64,11 +72,11 @@ export function fleetIdentity(server: FleetServer) {
|
||||
}
|
||||
|
||||
export function currentRound(server: FleetServer, report: GameTelemetry | undefined, now: number): number | null {
|
||||
if (server.telemetry && (!report || Date.parse(server.telemetry.receivedAt) > Date.parse(report.receivedAt))) report = server.telemetry;
|
||||
if (!report || (report.event !== 'round_change' && report.event !== 'heartbeat') || !freshServer(server, now) || !server.active_since || !server.game_started_at
|
||||
|| server.game_ended_at || (server.last_players ?? 0) === 0) return null;
|
||||
const received = Date.parse(report.receivedAt);
|
||||
const age = now - received;
|
||||
return age >= 0 && age <= 120_000 && received >= Date.parse(server.game_started_at)
|
||||
return freshTelemetry(report, now, server.telemetry_after) && received >= Date.parse(server.game_started_at)
|
||||
&& received >= Date.parse(server.active_since) ? report.round : null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user