From e734f33542c422b8edc5ee7de7d749e4dc30aa4a Mon Sep 17 00:00:00 2001 From: Laan Tungir Date: Fri, 26 Jun 2026 20:20:37 -0400 Subject: [PATCH] =?UTF-8?q?Display=20usernames=20instead=20of=20pubkeys=20?= =?UTF-8?q?in=20discovered=20relays=20Follows=20column=20=E2=80=94=20query?= =?UTF-8?q?=20Dexie=20profiles=20table=20for=20displayName/name,=20fall=20?= =?UTF-8?q?back=20to=20truncated=20pubkey=20if=20no=20profile=20cached?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- www/js/version.json | 6 +++--- www/ndk-worker.js | 36 +++++++++++++++++++++++++++++++++++- www/relays.html | 6 +++--- 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/www/js/version.json b/www/js/version.json index 0a3b834..e293f2d 100644 --- a/www/js/version.json +++ b/www/js/version.json @@ -1,5 +1,5 @@ { - "VERSION": "v0.7.52", - "VERSION_NUMBER": "0.7.52", - "BUILD_DATE": "2026-06-26T17:43:40.739Z" + "VERSION": "v0.7.53", + "VERSION_NUMBER": "0.7.53", + "BUILD_DATE": "2026-06-27T00:20:37.017Z" } diff --git a/www/ndk-worker.js b/www/ndk-worker.js index ca43b53..46dd34d 100644 --- a/www/ndk-worker.js +++ b/www/ndk-worker.js @@ -6443,6 +6443,11 @@ async function handleSetRelayEventLogging(requestId, enabled, port) { // from followed authors who write to relays the user does not subscribe to. // For each discovered relay we also report which followed pubkeys it serves, // by inverting ndk.outboxTracker.data (pubkey -> OutboxItem{writeRelays}). +function shortHexPubkey(hex) { + if (!hex || hex.length < 16) return hex || '-'; + return `${hex.slice(0, 8)}…${hex.slice(-4)}`; +} + // Cache for discovered relays — rebuilt only when the contact list changes. let discoveredRelaysCache = null; let discoveredRelaysCacheKey = ''; @@ -6527,6 +6532,29 @@ async function handleGetDiscoveredRelays(requestId, port) { } catch (_) {} } + // Look up profile names for all serving pubkeys from the Dexie + // profiles table so we can display usernames instead of pubkeys. + const pubkeyToName = new Map(); + try { + const adapter = ndk?.cacheAdapter?.adapter; + if (adapter?.db?.profiles) { + const allServingPubkeys = new Set(); + for (const servingSet of relayServesPubkeys.values()) { + for (const pk of servingSet) allServingPubkeys.add(pk); + } + // Query profiles table for all serving pubkeys. + for (const pk of allServingPubkeys) { + try { + const row = await adapter.db.profiles.get(pk); + if (row) { + const name = row.displayName || row.name || ''; + if (name) pubkeyToName.set(pk, name); + } + } catch (_) {} + } + } + } catch (_) {} + // Build the discovered relays list: relays that are NOT in the // user's own kind 10002 but ARE in follows' kind 10002. const relays = []; @@ -6534,11 +6562,17 @@ async function handleGetDiscoveredRelays(requestId, port) { if (ownRelays.has(relayUrl)) continue; // skip user's own relays // Check live connection status from the pool. const poolRelay = ndk.pool?.relays?.get(relayUrl); + const pubkeys = Array.from(servingSet); + // Map pubkeys to names, falling back to truncated pubkey. + const names = pubkeys.map(pk => + pubkeyToName.get(pk) || shortHexPubkey(pk) + ); relays.push({ url: relayUrl, status: poolRelay?.status || 0, connected: poolRelay ? poolRelay.status >= 5 : false, - servingPubkeys: Array.from(servingSet) + servingPubkeys: pubkeys, + servingNames: names }); } // Sort by serving count (most follows first), then by URL. diff --git a/www/relays.html b/www/relays.html index ea68dff..192c1e2 100644 --- a/www/relays.html +++ b/www/relays.html @@ -1383,9 +1383,9 @@ const versionInfo = await getVersion(); for (const relay of relaysWithFollows) { const connected = relay.connected ? SVG_CHECKED : SVG_UNCHECKED; const servingCount = Array.isArray(relay.servingPubkeys) ? relay.servingPubkeys.length : 0; - const followsList = Array.isArray(relay.servingPubkeys) - ? relay.servingPubkeys.map(shortNpub).join(', ') - : '-'; + const followsList = Array.isArray(relay.servingNames) && relay.servingNames.length > 0 + ? relay.servingNames.join(', ') + : (Array.isArray(relay.servingPubkeys) ? relay.servingPubkeys.map(shortNpub).join(', ') : '-'); const rowClass = relay.connected ? 'tblRowConnected' : ''; html += ``;