mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-08-24 16:05:07 +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' };
|
if (cost <= 400) return { class: 'quality-fair', text: 'Fair' };
|
||||||
return { class: 'quality-poor', text: 'Poor' };
|
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
|
// Create global API instance
|
||||||
|
|
|
@ -106,6 +106,22 @@ function updatePeersDisplay(data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
data.peers.forEach(peer => {
|
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);
|
const peerElement = createPeerElement(peer);
|
||||||
peersContainer.appendChild(peerElement);
|
peersContainer.appendChild(peerElement);
|
||||||
});
|
});
|
||||||
|
@ -163,11 +179,14 @@ function createPeerElement(peer) {
|
||||||
remove: t['peer_remove'] || 'Remove'
|
remove: t['peer_remove'] || 'Remove'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Extract name from NodeInfo
|
||||||
|
const displayName = yggUtils.getPeerDisplayName(peer);
|
||||||
|
|
||||||
div.innerHTML = `
|
div.innerHTML = `
|
||||||
<div class="peer-header">
|
<div class="peer-header">
|
||||||
<div class="peer-address-section">
|
<div class="peer-address-section">
|
||||||
<div class="peer-address copyable" onclick="copyPeerAddress('${peer.address || ''}')" data-key-title="copy_address_tooltip">
|
<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>
|
||||||
<div class="peer-key copyable" onclick="copyPeerKey('${peer.key || ''}')" data-key-title="copy_key_tooltip">${yggUtils.formatPublicKey(peer.key) || 'N/A'}</div>
|
<div class="peer-key copyable" onclick="copyPeerKey('${peer.key || ''}')" data-key-title="copy_key_tooltip">${yggUtils.formatPublicKey(peer.key) || 'N/A'}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue