mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-08-28 11:04:13 +00:00
Fix: packet detail uses server-side resolve-hops with GPS anchor
Client-side HopResolver wasn't properly disambiguating despite correct data. Switched detail view to use the server API directly: /api/resolve-hops?hops=...&observer=...&originLat=...&originLon=... Server-side resolution is battle-tested and handles regional filtering + GPS-anchored disambiguation correctly.
This commit is contained in:
+1
-1
@@ -86,7 +86,7 @@
|
||||
<script src="hop-display.js?v=1774221932"></script>
|
||||
<script src="app.js?v=1774126708"></script>
|
||||
<script src="home.js?v=1774042199"></script>
|
||||
<script src="packets.js?v=1774223407"></script>
|
||||
<script src="packets.js?v=1774223564"></script>
|
||||
<script src="map.js?v=1774220756" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="channels.js?v=1774331200" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="nodes.js?v=1774221131" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
|
||||
+13
-9
@@ -1100,18 +1100,22 @@
|
||||
let pathHops;
|
||||
try { pathHops = JSON.parse(pkt.path_json || '[]'); } catch { pathHops = []; }
|
||||
|
||||
// Re-resolve hops with sender location + observer — bypass stale cache
|
||||
// Re-resolve hops using SERVER-SIDE API with sender GPS + observer for proper disambiguation
|
||||
if (pathHops.length) {
|
||||
await ensureHopResolver();
|
||||
const senderLat = decoded.lat != null ? decoded.lat : (decoded.latitude || null);
|
||||
const senderLon = decoded.lon != null ? decoded.lon : (decoded.longitude || null);
|
||||
console.log('[renderDetail] GPS anchor:', senderLat, senderLon, 'observer:', pkt.observer_id?.slice(0,12));
|
||||
// Always re-resolve for detail view — list view may have cached without anchor
|
||||
const fresh = HopResolver.resolve(pathHops, senderLat, senderLon, null, null, pkt.observer_id);
|
||||
for (const [k, v] of Object.entries(fresh || {})) {
|
||||
console.log('[renderDetail] hop', k, '→', v.name, 'ambig:', v.ambiguous, 'conflicts:', v.conflicts?.length);
|
||||
hopNameCache[k] = v;
|
||||
}
|
||||
try {
|
||||
const params = new URLSearchParams({ hops: pathHops.join(',') });
|
||||
if (pkt.observer_id) params.set('observer', pkt.observer_id);
|
||||
if (senderLat != null) params.set('originLat', senderLat);
|
||||
if (senderLon != null) params.set('originLon', senderLon);
|
||||
const serverResolved = await api(`/resolve-hops?${params}`);
|
||||
if (serverResolved?.resolved) {
|
||||
for (const [k, v] of Object.entries(serverResolved.resolved)) {
|
||||
hopNameCache[k] = v;
|
||||
}
|
||||
}
|
||||
} catch {}
|
||||
}
|
||||
|
||||
// Parse hash size from path byte
|
||||
|
||||
Reference in New Issue
Block a user