import { app } from "../../../scripts/app.js"; const notificationSetup = () => { if (!("Notification" in window)) { console.log("This browser does not support notifications."); alert("This browser does not support notifications."); return; } if (Notification.permission === "denied") { console.log("Notifications are blocked. Please enable them in your browser settings."); alert("Notifications are blocked. Please enable them in your browser settings."); return; } if (Notification.permission !== "granted") { Notification.requestPermission(); } return true; }; app.registerExtension({ name: "pysssss.SystemNotification", async beforeRegisterNodeDef(nodeType, nodeData, app) { if (nodeData.name === "SystemNotification|pysssss") { const onExecuted = nodeType.prototype.onExecuted; nodeType.prototype.onExecuted = async function () { onExecuted?.apply(this, arguments); const mode = this.widgets.find((w) => w.name === "mode"); const message = this.widgets.find((w) => w.name === "message"); if (mode.value === "on empty queue") { if (app.ui.lastQueueSize !== 0) { await new Promise((r) => setTimeout(r, 500)); } if (app.ui.lastQueueSize !== 0) { return; } } if (!notificationSetup()) return; const notification = new Notification("ComfyUI", { body: message.value ?? "Your notification has triggered." }); }; const onNodeCreated = nodeType.prototype.onNodeCreated; nodeType.prototype.onNodeCreated = function () { onNodeCreated?.apply(this, arguments); notificationSetup(); }; } }, });