diff --git a/web/src/app/ts/AuditEvent.ts b/web/src/app/ts/AuditEvent.ts index d7b506f..cb99149 100644 --- a/web/src/app/ts/AuditEvent.ts +++ b/web/src/app/ts/AuditEvent.ts @@ -9,6 +9,7 @@ export const enum AuditEventType { ChangeDisplayName = 4, ChangeCreator = 5, Error = 6, + CheckList = 7, } // Discriminated union types for each event @@ -19,7 +20,8 @@ export type AuditEventData = | { EventType: AuditEventType.ChangeValidatedModel; EventData: AuditEventDataChangeValidatedModel; } | { EventType: AuditEventType.ChangeDisplayName; EventData: AuditEventDataChangeName; } | { EventType: AuditEventType.ChangeCreator; EventData: AuditEventDataChangeName; } - | { EventType: AuditEventType.Error; EventData: AuditEventDataError }; + | { EventType: AuditEventType.Error; EventData: AuditEventDataError; } + | { EventType: AuditEventType.CheckList; EventData: AuditEventDataCheckList; }; // Concrete data interfaces export interface AuditEventDataAction { @@ -51,6 +53,15 @@ export interface AuditEventDataError { error: string; } +export interface AuditEventDataCheck { + name: string + summary: string + passed: boolean +} +export interface AuditEventDataCheckList { + check_list: [AuditEventDataCheck]; +} + // Full audit event type (mirroring the Go struct) export interface AuditEvent { Id: number; @@ -87,6 +98,13 @@ export function decodeAuditEvent(event: AuditEvent): string { }case AuditEventType.Error:{ const data = event.EventData as AuditEventDataError; return `Error: ${data.error}`; + }case AuditEventType.CheckList:{ + const data = event.EventData as AuditEventDataCheckList; + const failedSummaries = data.check_list + .filter(check => !check.passed) + .map(check => check.summary) + .join('; '); + return `CheckList: ${failedSummaries}`; } default: throw new Error(`Unknown EventType: ${event.EventType}`);