Files
workavia-calendar-front/src/components/Error/EventErrorHandler.ts
T
Camille Moussu d8c931e02e [#317] improved event error management + test (#358)
Co-authored-by: Camille Moussu <cmoussu@linagora.com>
2025-11-25 15:46:30 +01:00

28 lines
708 B
TypeScript

export class EventErrorHandler {
private errors = new Map<string, string>();
private reportedEvents = new Set<string>();
private onErrorCallback?: (messages: string[]) => void;
setErrorCallback(callback: (messages: string[]) => void) {
this.onErrorCallback = callback;
}
reportError(eventId: string, message: string) {
if (!this.reportedEvents.has(eventId)) {
this.reportedEvents.add(eventId);
this.errors.set(eventId, message);
console.warn(`[EventErrorHandler] ${eventId}: ${message}`);
this.emit();
}
}
clearAll() {
this.errors.clear();
this.emit();
}
private emit() {
this.onErrorCallback?.(Array.from(this.errors.values()));
}
}