forked from snxraven/p2ns
feat: implement fully dynamic real-time domains list via WebSocket
Add WebSocket broadcasting of complete domains list from server to clients Implement periodic domain list updates (10-second intervals) Fix reconnection issues where domains list remained empty after p2ns restart Add proper state management for WebSocket disconnect/reconnect scenarios Enhance empty state messages to show "Disconnected" status during outages Reset scroll/pagination state when receiving WebSocket domain updates Add client-server request/response mechanism for immediate domain list refresh Ensure domains list updates in real-time during consensus resolution Remove conflicting HTTP fetches during reconnection to prevent race conditions
This commit is contained in:
@@ -136,11 +136,21 @@ function genericRenderInfiniteScroll(tabId) {
|
||||
const emptyRow = document.createElement('tr');
|
||||
emptyRow.className = 'border-b';
|
||||
const colCount = tabId === 'host-servers' ? 7 : (tabId === 'host-clients' ? 6 : (tabId === 'domains' ? 4 : 3));
|
||||
let message = '';
|
||||
let subMessage = '';
|
||||
if (tabId === 'domains' && !window.wsConnected) {
|
||||
message = 'Disconnected';
|
||||
subMessage = 'Reconnecting to P2NS server...';
|
||||
} else {
|
||||
message = `No ${tabId === 'host-servers' ? 'servers' : tabId === 'host-clients' ? 'clients' : 'items'} found`;
|
||||
subMessage = tabId === 'host-servers' ? 'Create a server to get started' : tabId === 'host-clients' ? 'Create a client to get started' : 'Try adjusting your search';
|
||||
}
|
||||
|
||||
emptyRow.innerHTML = `<td colspan="${colCount}" class="p-8 text-center theme-text-tertiary">
|
||||
<div class="flex flex-col items-center gap-2">
|
||||
<span class="text-4xl">📭</span>
|
||||
<span class="text-lg font-semibold">No ${tabId === 'host-servers' ? 'servers' : tabId === 'host-clients' ? 'clients' : 'items'} found</span>
|
||||
<span class="text-sm">${tabId === 'host-servers' ? 'Create a server to get started' : tabId === 'host-clients' ? 'Create a client to get started' : 'Try adjusting your search'}</span>
|
||||
<span class="text-4xl">${tabId === 'domains' && !window.wsConnected ? '🔌' : '📭'}</span>
|
||||
<span class="text-lg font-semibold">${message}</span>
|
||||
<span class="text-sm">${subMessage}</span>
|
||||
</div>
|
||||
</td>`;
|
||||
container.appendChild(emptyRow);
|
||||
|
||||
Reference in New Issue
Block a user