forked from snxraven/p2ns
Cleanup - Bug Fixes
This commit is contained in:
@@ -17,6 +17,10 @@ let lastConsensusStates = new Map(); // Track last known consensus states for ch
|
||||
let debounceTimer = null;
|
||||
let dnsPassUpdateHandler = null;
|
||||
let coreAppendHandler = null;
|
||||
let domainAddedHandler = null;
|
||||
let domainRemovedHandler = null;
|
||||
let peerConnectedHandler = null;
|
||||
let peerDisconnectedHandler = null;
|
||||
|
||||
/**
|
||||
* Enrich peer IDs with profile data
|
||||
@@ -457,7 +461,7 @@ async function onInit() {
|
||||
setupWebSocketHandlers();
|
||||
|
||||
// Subscribe to consensus-related events (non-blocking)
|
||||
sdk.events.on('domain-added', async (data) => {
|
||||
domainAddedHandler = async (data) => {
|
||||
try {
|
||||
sdk.log.debug('domain.consensus', `Domain added: ${data.domain}`);
|
||||
// Trigger consensus check after a short delay to allow DNS to update
|
||||
@@ -467,9 +471,10 @@ async function onInit() {
|
||||
} catch (err) {
|
||||
sdk.log.error('domain.consensus', `Error handling domain-added event: ${err.message}`);
|
||||
}
|
||||
});
|
||||
};
|
||||
sdk.events.on('domain-added', domainAddedHandler);
|
||||
|
||||
sdk.events.on('domain-removed', async (data) => {
|
||||
domainRemovedHandler = async (data) => {
|
||||
try {
|
||||
sdk.log.debug('domain.consensus', `Domain removed: ${data.domain}`);
|
||||
lastConsensusStates.delete(data.domain);
|
||||
@@ -480,7 +485,8 @@ async function onInit() {
|
||||
} catch (err) {
|
||||
sdk.log.error('domain.consensus', `Error handling domain-removed event: ${err.message}`);
|
||||
}
|
||||
});
|
||||
};
|
||||
sdk.events.on('domain-removed', domainRemovedHandler);
|
||||
|
||||
// Listen to DNS pass updates for real-time consensus changes
|
||||
// This is the key to making it fully live - we detect when DNS entries change
|
||||
@@ -529,7 +535,7 @@ async function onInit() {
|
||||
}
|
||||
|
||||
// Listen to peer connection/disconnection events
|
||||
sdk.events.on('peer-connected', async (data) => {
|
||||
peerConnectedHandler = async (data) => {
|
||||
try {
|
||||
sdk.log.debug('domain.consensus', `Peer connected: ${data.peerId}`);
|
||||
// Peer count changed, update state
|
||||
@@ -537,9 +543,10 @@ async function onInit() {
|
||||
} catch (err) {
|
||||
sdk.log.error('domain.consensus', `Error handling peer-connected event: ${err.message}`);
|
||||
}
|
||||
});
|
||||
};
|
||||
sdk.events.on('peer-connected', peerConnectedHandler);
|
||||
|
||||
sdk.events.on('peer-disconnected', async (data) => {
|
||||
peerDisconnectedHandler = async (data) => {
|
||||
try {
|
||||
sdk.log.debug('domain.consensus', `Peer disconnected: ${data.peerId}`);
|
||||
// Peer count changed, update state
|
||||
@@ -547,7 +554,8 @@ async function onInit() {
|
||||
} catch (err) {
|
||||
sdk.log.error('domain.consensus', `Error handling peer-disconnected event: ${err.message}`);
|
||||
}
|
||||
});
|
||||
};
|
||||
sdk.events.on('peer-disconnected', peerDisconnectedHandler);
|
||||
|
||||
sdk.log.info('domain.consensus', 'WebSocket server initialized with real-time event listeners');
|
||||
}
|
||||
@@ -569,6 +577,23 @@ async function onShutdown() {
|
||||
clearTimeout(debounceTimer);
|
||||
debounceTimer = null;
|
||||
}
|
||||
|
||||
if (domainAddedHandler) {
|
||||
sdk.events.off('domain-added', domainAddedHandler);
|
||||
domainAddedHandler = null;
|
||||
}
|
||||
if (domainRemovedHandler) {
|
||||
sdk.events.off('domain-removed', domainRemovedHandler);
|
||||
domainRemovedHandler = null;
|
||||
}
|
||||
if (peerConnectedHandler) {
|
||||
sdk.events.off('peer-connected', peerConnectedHandler);
|
||||
peerConnectedHandler = null;
|
||||
}
|
||||
if (peerDisconnectedHandler) {
|
||||
sdk.events.off('peer-disconnected', peerDisconnectedHandler);
|
||||
peerDisconnectedHandler = null;
|
||||
}
|
||||
|
||||
// Remove event listeners (safely)
|
||||
try {
|
||||
|
||||
@@ -155,7 +155,10 @@ class DomainDetailView {
|
||||
</div>
|
||||
|
||||
<!-- Resolved Information -->
|
||||
${consensus.status === 'resolved' ? `
|
||||
${consensus.status === 'resolved' ? (() => {
|
||||
const claimantAttr = String(consensus.resolvedClaimant || '').replace(/\\/g, '\\\\').replace(/'/g, "\\'");
|
||||
const hashAttr = String(consensus.hash || '').replace(/\\/g, '\\\\').replace(/'/g, "\\'");
|
||||
return `
|
||||
<div class="glass-card mb-6" id="resolved-info-section">
|
||||
<h3 class="text-sm font-semibold text-secondary mb-3">Resolved Information</h3>
|
||||
<div style="display: flex; flex-direction: column; gap: var(--spacing-sm);">
|
||||
@@ -163,7 +166,7 @@ class DomainDetailView {
|
||||
<span class="text-tertiary">Resolved Claimant:</span>
|
||||
<div class="ml-2 inline-block" data-resolved-claimant>${this.renderPeerWithProfile(consensus.resolvedClaimant, this.data.profiles?.[consensus.resolvedClaimant] || null, 32)}</div>
|
||||
<button
|
||||
onclick="window.utils.copyToClipboard('${consensus.resolvedClaimant}').then(() => alert('Copied!'))"
|
||||
onclick="window.utils.copyToClipboard('${claimantAttr}').then(() => alert('Copied!'))"
|
||||
class="btn btn-secondary ml-2 text-xs"
|
||||
>
|
||||
Copy
|
||||
@@ -173,7 +176,7 @@ class DomainDetailView {
|
||||
<span class="text-tertiary">Resolved Hash:</span>
|
||||
<span class="ml-2 font-mono" data-resolved-hash>${window.utils.formatHash(consensus.hash)}</span>
|
||||
<button
|
||||
onclick="window.utils.copyToClipboard('${consensus.hash}').then(() => alert('Copied!'))"
|
||||
onclick="window.utils.copyToClipboard('${hashAttr}').then(() => alert('Copied!'))"
|
||||
class="btn btn-secondary ml-2 text-xs"
|
||||
>
|
||||
Copy
|
||||
@@ -181,7 +184,8 @@ class DomainDetailView {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
` : ''}
|
||||
`;
|
||||
})() : ''}
|
||||
|
||||
<!-- Vote Distribution Chart -->
|
||||
${this.getVoteCounts().length > 0 ? `
|
||||
|
||||
Reference in New Issue
Block a user