refactor: Refactor internal error / info message components (#1842)

This commit is contained in:
Dermot Duffy
2025-01-20 15:26:53 -08:00
committed by GitHub
parent 99fe613811
commit faa5ec3eec
19 changed files with 421 additions and 252 deletions
+18 -9
View File
@@ -1,12 +1,18 @@
import {
FrigateCardError,
MESSAGE_TYPE_PRIORITIES,
Message,
MessageType,
} from '../types';
import { FrigateCardError, Message, MessageType } from '../types';
import { errorToConsole } from '../utils/basic';
import { CardMessageAPI } from './types';
type MessagePriority = {
[type in MessageType]: number;
};
const MESSAGE_TYPE_PRIORITIES: MessagePriority = {
info: 10,
error: 20,
connection: 30,
diagnostics: 40,
};
export class MessageManager {
protected _message: Message | null = null;
protected _api: CardMessageAPI;
@@ -52,17 +58,20 @@ export class MessageManager {
errorToConsole(error);
this.setMessageIfHigherPriority({
message: prefix ? `${prefix}: ${error.message}` : error.message,
message: prefix ? `${prefix}: ${error.message}` : String(error.message),
type: 'error',
...(error instanceof FrigateCardError && { context: error.context }),
});
}
public setMessageIfHigherPriority(message: Message): boolean {
const resolveMessageType = (message: Message): MessageType => {
return message.type ?? 'info';
};
const currentPriority = this._message
? MESSAGE_TYPE_PRIORITIES[this._message.type]
? MESSAGE_TYPE_PRIORITIES[resolveMessageType(this._message)]
: 0;
const newPriority = MESSAGE_TYPE_PRIORITIES[message.type];
const newPriority = MESSAGE_TYPE_PRIORITIES[resolveMessageType(message)];
if (this._message && newPriority < currentPriority) {
return false;