Files
vscode-front-matter/src/helpers/Notifications.ts
T
2021-12-15 14:10:58 +01:00

52 lines
1.4 KiB
TypeScript

import { window } from "vscode";
import { EXTENSION_NAME, SETTING_GLOBAL_NOTIFICATIONS } from "../constants";
import { Logger } from "./Logger";
import { Settings } from "./SettingsHelper";
export class Notifications {
public static info(message: string, items?: any): Thenable<string | undefined> {
Logger.info(`${EXTENSION_NAME}: ${message}`, "INFO");
if (this.shouldShow("INFO")) {
return window.showInformationMessage(`${EXTENSION_NAME}: ${message}`, items);
}
return Promise.resolve(undefined);
}
public static warning(message: string, items?: any): Thenable<string | undefined> {
Logger.info(`${EXTENSION_NAME}: ${message}`, "WARNING");
if (this.shouldShow("WARNING")) {
return window.showWarningMessage(`${EXTENSION_NAME}: ${message}`, items);
}
return Promise.resolve(undefined);
}
public static error(message: string, items?: any): Thenable<string | undefined> {
Logger.info(`${EXTENSION_NAME}: ${message}`, "ERROR");
if (this.shouldShow("ERROR")) {
return window.showErrorMessage(`${EXTENSION_NAME}: ${message}`, items);
}
return Promise.resolve(undefined);
}
private static shouldShow(level: "INFO" | "WARNING" | "ERROR"): boolean {
let levels = Settings.get<string[]>(SETTING_GLOBAL_NOTIFICATIONS);
if (!levels) {
return true;
}
if (levels.map(l => l.toLowerCase()).includes(level.toLowerCase())) {
return true;
}
return false;
}
}