From c87d9d96a49fb5f2cbaebef7d2fc03e6831f369d Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Wed, 1 Oct 2025 19:47:52 -0400 Subject: [PATCH] Guard admin list relay publish listeners --- js/adminListStore.js | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/js/adminListStore.js b/js/adminListStore.js index 428a8e9d..1abb14bc 100644 --- a/js/adminListStore.js +++ b/js/adminListStore.js @@ -389,14 +389,40 @@ function publishToRelay(url, signedEvent, listKey) { } if (typeof pub.on === "function") { - pub.on("ok", () => finalize(true)); - pub.on("seen", () => finalize(true)); - pub.on("failed", (reason) => { + const registerHandler = (eventName, handler) => { + try { + pub.on(eventName, handler); + return true; + } catch (error) { + if (isDevMode) { + console.warn( + `[adminListStore] Relay publish rejected ${eventName} listener:`, + error + ); + } + return false; + } + }; + + const handleFailure = (reason) => { const error = - reason instanceof Error ? reason : new Error(String(reason || "failed")); + reason instanceof Error + ? reason + : new Error(String(reason || "failed")); finalize(false, error); - }); - return; + }; + + let handlerRegistered = false; + handlerRegistered = + registerHandler("ok", () => finalize(true)) || handlerRegistered; + handlerRegistered = + registerHandler("seen", () => finalize(true)) || handlerRegistered; + handlerRegistered = + registerHandler("failed", handleFailure) || handlerRegistered; + + if (handlerRegistered) { + return; + } } if (typeof pub.then === "function") {