From c826501e3c6f5174874bb853ceab80ab672b55ae Mon Sep 17 00:00:00 2001 From: bymyself Date: Thu, 13 Feb 2025 23:50:46 -0700 Subject: [PATCH 1/3] add error report option to show_message --- js/common.js | 59 ++++++++++++++++++++++++++++++++++++-- js/custom-nodes-manager.js | 24 ++++++++++++++-- 2 files changed, 78 insertions(+), 5 deletions(-) diff --git a/js/common.js b/js/common.js index 7a63ad51..86e65344 100644 --- a/js/common.js +++ b/js/common.js @@ -94,9 +94,62 @@ function internalCustomConfirm(message, confirmMessage, cancelMessage) { }); } -export function show_message(msg) { - app.ui.dialog.show(msg); - app.ui.dialog.element.style.zIndex = 1100; +export function addReportButton(dialogEl, options = {}) { + const contentEl = dialogEl.querySelector(".comfy-modal-content"); + const closeBtnEl = contentEl?.querySelector("button"); + if (!contentEl || !closeBtnEl) return; + + const { msg, errorSubtype, extraFields = [] } = options; + + const button = document.createElement("button"); + button.textContent = "Report Error"; + button.style.marginBottom = "0.25rem"; // mt-1 + + const cleanText = (text) => (text ? text.replace(/[\r\n\t\s]/g, " ") : text); + + button.addEventListener("click", () => { + window["app"].extensionManager.dialog.showIssueReportDialog({ + title: "Report Manager Issue", + subtitle: "Please describe the issue you are experiencing", + panelProps: { + errorType: "ManagerError", + exceptionMessage: cleanText(msg), + tags: { + errorSubtype: cleanText(errorSubtype), + isElectron: "electronAPI" in window, + }, + defaultFields: ["Logs", "SystemStats"], + extraFields: [ + { + label: "ComfyUI-Manager Version", + value: "ManagerVersion", // unique ID for the field + getData: async () => + (await api.fetchApi(`/manager/version`)).text(), + }, + ...extraFields, + ], + }, + }); + button.remove(); + }); + + closeBtnEl.addEventListener("click", () => button.remove(), { + once: true, + passive: true, + }); + contentEl.insertBefore(button, closeBtnEl); +} + +export function show_message(msg, errorReportOptions) { + app.ui.dialog.show(msg); + if (errorReportOptions) { + try { + addReportButton(app.ui.dialog.element, errorReportOptions); + } catch { + // do nothing + } + } + app.ui.dialog.element.style.zIndex = 1100; } export async function sleep(ms) { diff --git a/js/custom-nodes-manager.js b/js/custom-nodes-manager.js index 6f8fdd02..bbee79f9 100644 --- a/js/custom-nodes-manager.js +++ b/js/custom-nodes-manager.js @@ -930,7 +930,17 @@ export class CustomNodesManager { show_message(title+'The information is not available.') } else { - show_message(title+sanitizeHTML(res['msg']).replace(/ /g, ' ').replace(/\n/g, '
')); + const errorReportOptions = { + msg: `Error importing '${rowItem.title}' module.`, + errorSubtype: "importError", + extraFields: [{ + label: "Failed Import Info", + value: "FailedImportInfo", + getData: () => res['msg'] + }], + } + + show_message(title+sanitizeHTML(res['msg']).replace(/ /g, ' ').replace(/\n/g, '
'), errorReportOptions); } } @@ -1461,7 +1471,17 @@ export class CustomNodesManager { if (errorMsg) { self.showError(errorMsg); - show_message("Installation Error:\n"+errorMsg); + show_message("Installation Error:\n"+errorMsg, { + msg: `Installation Error: ${errorMsg}`, + errorSubtype: `node${label}Error`, + extraFields: [ + { + label: `${label} Error Trace`, + value: `${label}ErrorsTrace`, + getData: () => errorMsg, + }, + ], + }); } else { self.showStatus(`${label} ${result.length} custom node(s) successfully`); } From bae9531dc756db8279ab9862f826bc4c191fc3f9 Mon Sep 17 00:00:00 2001 From: bymyself Date: Thu, 13 Feb 2025 23:54:23 -0700 Subject: [PATCH 2/3] convert spaces to tabs --- js/common.js | 94 +++++++++++++++++++------------------- js/custom-nodes-manager.js | 20 ++++---- 2 files changed, 57 insertions(+), 57 deletions(-) diff --git a/js/common.js b/js/common.js index 86e65344..83c5f2b7 100644 --- a/js/common.js +++ b/js/common.js @@ -95,61 +95,61 @@ function internalCustomConfirm(message, confirmMessage, cancelMessage) { } export function addReportButton(dialogEl, options = {}) { - const contentEl = dialogEl.querySelector(".comfy-modal-content"); - const closeBtnEl = contentEl?.querySelector("button"); - if (!contentEl || !closeBtnEl) return; + const contentEl = dialogEl.querySelector(".comfy-modal-content"); + const closeBtnEl = contentEl?.querySelector("button"); + if (!contentEl || !closeBtnEl) return; - const { msg, errorSubtype, extraFields = [] } = options; + const { msg, errorSubtype, extraFields = [] } = options; - const button = document.createElement("button"); - button.textContent = "Report Error"; - button.style.marginBottom = "0.25rem"; // mt-1 + const button = document.createElement("button"); + button.textContent = "Report Error"; + button.style.marginBottom = "0.25rem"; // mt-1 - const cleanText = (text) => (text ? text.replace(/[\r\n\t\s]/g, " ") : text); + const cleanText = (text) => (text ? text.replace(/[\r\n\t\s]/g, " ") : text); - button.addEventListener("click", () => { - window["app"].extensionManager.dialog.showIssueReportDialog({ - title: "Report Manager Issue", - subtitle: "Please describe the issue you are experiencing", - panelProps: { - errorType: "ManagerError", - exceptionMessage: cleanText(msg), - tags: { - errorSubtype: cleanText(errorSubtype), - isElectron: "electronAPI" in window, - }, - defaultFields: ["Logs", "SystemStats"], - extraFields: [ - { - label: "ComfyUI-Manager Version", - value: "ManagerVersion", // unique ID for the field - getData: async () => - (await api.fetchApi(`/manager/version`)).text(), - }, - ...extraFields, - ], - }, - }); - button.remove(); - }); + button.addEventListener("click", () => { + window["app"].extensionManager.dialog.showIssueReportDialog({ + title: "Report Manager Issue", + subtitle: "Please describe the issue you are experiencing", + panelProps: { + errorType: "ManagerError", + exceptionMessage: cleanText(msg), + tags: { + errorSubtype: cleanText(errorSubtype), + isElectron: "electronAPI" in window, + }, + defaultFields: ["Logs", "SystemStats"], + extraFields: [ + { + label: "ComfyUI-Manager Version", + value: "ManagerVersion", // unique ID for the field + getData: async () => + (await api.fetchApi(`/manager/version`)).text(), + }, + ...extraFields, + ], + }, + }); + button.remove(); + }); - closeBtnEl.addEventListener("click", () => button.remove(), { - once: true, - passive: true, - }); - contentEl.insertBefore(button, closeBtnEl); + closeBtnEl.addEventListener("click", () => button.remove(), { + once: true, + passive: true, + }); + contentEl.insertBefore(button, closeBtnEl); } export function show_message(msg, errorReportOptions) { - app.ui.dialog.show(msg); - if (errorReportOptions) { - try { - addReportButton(app.ui.dialog.element, errorReportOptions); - } catch { - // do nothing - } - } - app.ui.dialog.element.style.zIndex = 1100; + app.ui.dialog.show(msg); + if (errorReportOptions) { + try { + addReportButton(app.ui.dialog.element, errorReportOptions); + } catch { + // do nothing + } + } + app.ui.dialog.element.style.zIndex = 1100; } export async function sleep(ms) { diff --git a/js/custom-nodes-manager.js b/js/custom-nodes-manager.js index bbee79f9..f9e2e35c 100644 --- a/js/custom-nodes-manager.js +++ b/js/custom-nodes-manager.js @@ -1471,17 +1471,17 @@ export class CustomNodesManager { if (errorMsg) { self.showError(errorMsg); - show_message("Installation Error:\n"+errorMsg, { + show_message("Installation Error:\n"+errorMsg, { msg: `Installation Error: ${errorMsg}`, - errorSubtype: `node${label}Error`, - extraFields: [ - { - label: `${label} Error Trace`, - value: `${label}ErrorsTrace`, - getData: () => errorMsg, - }, - ], - }); + errorSubtype: `node${label}Error`, + extraFields: [ + { + label: `${label} Error Trace`, + value: `${label}ErrorsTrace`, + getData: () => errorMsg, + }, + ], + }); } else { self.showStatus(`${label} ${result.length} custom node(s) successfully`); } From 7e2213e9b9d7731d2c0df959eeec5d07824bfcb7 Mon Sep 17 00:00:00 2001 From: bymyself Date: Thu, 13 Feb 2025 23:55:31 -0700 Subject: [PATCH 3/3] nit: remove comment --- js/common.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/common.js b/js/common.js index 83c5f2b7..054b20ac 100644 --- a/js/common.js +++ b/js/common.js @@ -103,7 +103,7 @@ export function addReportButton(dialogEl, options = {}) { const button = document.createElement("button"); button.textContent = "Report Error"; - button.style.marginBottom = "0.25rem"; // mt-1 + button.style.marginBottom = "0.25rem"; const cleanText = (text) => (text ? text.replace(/[\r\n\t\s]/g, " ") : text);