Cleanup - Bug Fixes

This commit is contained in:
Raven Scott
2026-05-30 22:27:42 -04:00
parent 229271fbcf
commit 4b9eb916e9
61 changed files with 733 additions and 6944 deletions
+33 -8
View File
@@ -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 ? `