Merge pull request #235 from PR0M3TH3AN/codex/update-publisheventtorelay-and-add-tests

Guard watch history publish when relays omit seen listener
This commit is contained in:
thePR0M3TH3AN authored and GitHub committed 2025-10-01 21:28:39 -04:00
commit c842c4dbb3
2 files changed
+25 -2

No files matched your search

+17 -2
View File
@@ -1171,8 +1171,23 @@ function publishEventToRelay(pool, url, event) {
let handlerRegistered = false;
handlerRegistered =
registerHandler("ok", handleSuccess) || handlerRegistered;
handlerRegistered =
registerHandler("seen", handleSuccess) || handlerRegistered;
const supportsSeenEvent = (() => {
if (!pub || typeof pub !== "object") {
return false;
}
const candidateArrays = [
pub.seen,
pub._seen,
pub.listeners?.seen,
];
return candidateArrays.some((value) => Array.isArray(value));
})();
if (supportsSeenEvent) {
handlerRegistered =
registerHandler("seen", handleSuccess) || handlerRegistered;
}
handlerRegistered =
registerHandler("failed", handleFailure) || handlerRegistered;
+8
View File
@@ -604,11 +604,14 @@ const {
publishedEvents: noSeenPublishedEvents,
} = createPublishingClient(NO_SEEN_ACTOR);
let noSeenHandlerRequested = false;
noSeenClient.pool.publish = (_urls, event) => {
noSeenPublishedEvents.push(event);
return {
on(eventName, handler) {
if (eventName === "seen") {
noSeenHandlerRequested = true;
throw new TypeError("seen unsupported");
}
if (eventName === "ok") {
@@ -634,6 +637,11 @@ assert(
noSeenResult.events.length > 0,
"publish should still return the emitted events when seen is unsupported"
);
assert.equal(
noSeenHandlerRequested,
false,
"publish should not attempt to register a seen handler when relay omits support"
);
delete globalThis.window.nostr;