20 lines
632 B
JavaScript
20 lines
632 B
JavaScript
export function isNotifiableCriticalAlert(alert) {
|
|
return (
|
|
alert.severity === 'Critical'
|
|
&& (alert.status === 'Open' || alert.status === 'Escalated')
|
|
)
|
|
}
|
|
|
|
export function detectNewCriticalAlerts(alerts, lastSeenIds, seeded = false) {
|
|
const criticalOpen = alerts.filter(isNotifiableCriticalAlert)
|
|
const criticalIds = criticalOpen.map(alert => alert.id)
|
|
|
|
if (!seeded) {
|
|
return { newAlerts: [], nextSeenIds: criticalIds, seeded: true }
|
|
}
|
|
|
|
const seen = new Set(lastSeenIds)
|
|
const newAlerts = criticalOpen.filter(alert => !seen.has(alert.id))
|
|
return { newAlerts, nextSeenIds: criticalIds, seeded: true }
|
|
}
|