diff --git a/web/public/index.html b/web/public/index.html index 37a2103..2c641f3 100644 --- a/web/public/index.html +++ b/web/public/index.html @@ -316,24 +316,30 @@ for (const n of nodes) { if (n.node_id && !seenNodeIds.has(n.node_id)) { newNodes.push(n); - seenNodeIds.add(n.node_id); } } - newNodes.sort((a, b) => (a.first_heard ?? 0) - (b.first_heard ?? 0)); - for (const n of newNodes) { - addNewNodeChatEntry(n); - } const messages = await fetchMessages(); const newMessages = []; for (const m of messages) { if (m.id && !seenMessageIds.has(m.id)) { newMessages.push(m); - seenMessageIds.add(m.id); } } - newMessages.sort((a, b) => (a.rx_time ?? 0) - (b.rx_time ?? 0)); - for (const m of newMessages) { - addNewMessageChatEntry(m); + const entries = []; + for (const n of newNodes) entries.push({ type: 'node', ts: n.first_heard ?? 0, item: n }); + for (const m of newMessages) entries.push({ type: 'msg', ts: m.rx_time ?? 0, item: m }); + entries.sort((a, b) => { + if (a.ts !== b.ts) return a.ts - b.ts; + return a.type === 'node' && b.type === 'msg' ? -1 : a.type === 'msg' && b.type === 'node' ? 1 : 0; + }); + for (const e of entries) { + if (e.type === 'node') { + addNewNodeChatEntry(e.item); + if (e.item.node_id) seenNodeIds.add(e.item.node_id); + } else { + addNewMessageChatEntry(e.item); + if (e.item.id) seenMessageIds.add(e.item.id); + } } allNodes = nodes; applyFilter();