From 48b481f284b307d8f206f98a56267bba2d8def39 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Sun, 11 Jan 2026 13:06:15 -0500 Subject: [PATCH] Improve npub decoding and seed logging --- js/userBlocks.js | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/js/userBlocks.js b/js/userBlocks.js index ceb2e156..72e50bca 100644 --- a/js/userBlocks.js +++ b/js/userBlocks.js @@ -538,12 +538,30 @@ function normalizeDecodedHex(value) { return trimmed.toLowerCase(); } +function normalizeNpubInput(value) { + if (typeof value !== "string") { + return ""; + } + + const trimmed = value.trim(); + if (!trimmed) { + return ""; + } + + const lower = trimmed.toLowerCase(); + if (lower.startsWith("nostr:")) { + return trimmed.slice(6).trim(); + } + + return trimmed; +} + function decodeNpubToHex(npub) { if (typeof npub !== "string") { return null; } - const trimmed = npub.trim(); + const trimmed = normalizeNpubInput(npub); if (!trimmed) { return null; } @@ -552,11 +570,7 @@ function decodeNpubToHex(npub) { return trimmed.toLowerCase(); } - if (!trimmed.toLowerCase().startsWith("npub1")) { - return null; - } - - const tools = window?.NostrTools; + const tools = typeof globalThis !== "undefined" ? globalThis?.NostrTools : null; const decoder = tools?.nip19?.decode; if (typeof decoder === "function") { try { @@ -1489,11 +1503,13 @@ class UserBlockListManager { const removals = state.removals; const additions = new Set(); + let invalidCount = 0; const candidates = Array.isArray(candidateNpubs) ? candidateNpubs : []; for (const candidate of candidates) { const candidateHex = normalizeHex(candidate); if (!candidateHex) { + invalidCount += 1; continue; } if (candidateHex === actorHex) { @@ -1515,6 +1531,7 @@ class UserBlockListManager { { actorPubkey: actorHex, candidateCount: candidates.length, + invalidCount, blockedCount: this.blockedPubkeys.size, removalCount: removals.size, }, @@ -1570,11 +1587,13 @@ class UserBlockListManager { const removals = state.removals; const additions = new Set(); + let invalidCount = 0; const candidates = Array.isArray(candidateNpubs) ? candidateNpubs : []; for (const candidate of candidates) { const candidateHex = normalizeHex(candidate); if (!candidateHex) { + invalidCount += 1; continue; } if (candidateHex === actorHex) { @@ -1593,6 +1612,7 @@ class UserBlockListManager { { actorPubkey: actorHex, candidateCount: candidates.length, + invalidCount, removalCount: removals.size, }, ); @@ -1632,11 +1652,13 @@ class UserBlockListManager { const state = this._getSeedState(actorHex); const removals = state.removals; const additions = new Set(); + let invalidCount = 0; const candidates = Array.isArray(candidateNpubs) ? candidateNpubs : []; for (const candidate of candidates) { const candidateHex = normalizeHex(candidate); if (!candidateHex) { + invalidCount += 1; continue; } if (candidateHex === actorHex) { @@ -1658,6 +1680,7 @@ class UserBlockListManager { { actorPubkey: actorHex, candidateCount: candidates.length, + invalidCount, blockedCount: this.blockedPubkeys.size, removalCount: removals.size, },