mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-08-24 07:55:06 +03:00
Add methods to extract NodeInfo names and improve peer display in WebUI. Enhance debug logging for NodeInfo processing.
This commit is contained in:
parent
795cc506fd
commit
e473c62936
2 changed files with 57 additions and 1 deletions
|
@ -274,6 +274,43 @@ class YggdrasilUtils {
|
|||
if (cost <= 400) return { class: 'quality-fair', text: 'Fair' };
|
||||
return { class: 'quality-poor', text: 'Poor' };
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract name from NodeInfo JSON string
|
||||
* @param {string} nodeinfo - NodeInfo JSON string
|
||||
* @returns {string} - Extracted name or null
|
||||
*/
|
||||
static extractNodeInfoName(nodeinfo) {
|
||||
if (!nodeinfo || typeof nodeinfo !== 'string') {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
const parsed = JSON.parse(nodeinfo);
|
||||
return parsed.name && typeof parsed.name === 'string' ? parsed.name : null;
|
||||
} catch (error) {
|
||||
console.warn('Failed to parse NodeInfo:', error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get display name for peer (from NodeInfo or fallback to address)
|
||||
* @param {Object} peer - Peer object with nodeinfo and address
|
||||
* @returns {string} - Display name
|
||||
*/
|
||||
static getPeerDisplayName(peer) {
|
||||
// Try to get name from NodeInfo first
|
||||
if (peer.nodeinfo) {
|
||||
const name = this.extractNodeInfoName(peer.nodeinfo);
|
||||
if (name) {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback to address or "Unknown"
|
||||
return peer.address || 'Unknown';
|
||||
}
|
||||
}
|
||||
|
||||
// Create global API instance
|
||||
|
|
|
@ -106,6 +106,22 @@ function updatePeersDisplay(data) {
|
|||
}
|
||||
|
||||
data.peers.forEach(peer => {
|
||||
// Debug: log NodeInfo for each peer
|
||||
if (peer.nodeinfo) {
|
||||
console.log(`[DEBUG WebUI] Peer ${peer.address} has NodeInfo:`, peer.nodeinfo);
|
||||
try {
|
||||
const parsed = JSON.parse(peer.nodeinfo);
|
||||
console.log(`[DEBUG WebUI] Parsed NodeInfo for ${peer.address}:`, parsed);
|
||||
if (parsed.name) {
|
||||
console.log(`[DEBUG WebUI] Found name for ${peer.address}: ${parsed.name}`);
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn(`[DEBUG WebUI] Failed to parse NodeInfo for ${peer.address}:`, e);
|
||||
}
|
||||
} else {
|
||||
console.log(`[DEBUG WebUI] Peer ${peer.address} has no NodeInfo`);
|
||||
}
|
||||
|
||||
const peerElement = createPeerElement(peer);
|
||||
peersContainer.appendChild(peerElement);
|
||||
});
|
||||
|
@ -163,11 +179,14 @@ function createPeerElement(peer) {
|
|||
remove: t['peer_remove'] || 'Remove'
|
||||
};
|
||||
|
||||
// Extract name from NodeInfo
|
||||
const displayName = yggUtils.getPeerDisplayName(peer);
|
||||
|
||||
div.innerHTML = `
|
||||
<div class="peer-header">
|
||||
<div class="peer-address-section">
|
||||
<div class="peer-address copyable" onclick="copyPeerAddress('${peer.address || ''}')" data-key-title="copy_address_tooltip">
|
||||
${peer.name || 'N/A'} (${peer.address || 'N/A'})
|
||||
${displayName} ${peer.address ? `(${peer.address})` : ''}
|
||||
</div>
|
||||
<div class="peer-key copyable" onclick="copyPeerKey('${peer.key || ''}')" data-key-title="copy_key_tooltip">${yggUtils.formatPublicKey(peer.key) || 'N/A'}</div>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue