mirror of
https://github.com/BigBodyCobain/Shadowbroker.git
synced 2026-07-16 00:37:25 +02:00
Stabilize Infonet private sync and selected telemetry
This commit is contained in:
@@ -61,7 +61,7 @@ export default function NetworkStats() {
|
||||
const nodeColor = stats.syncOutcome === 'ok' ? 'text-green-400'
|
||||
: stats.syncOutcome === 'running' ? 'text-amber-400'
|
||||
: stats.nodeEnabled ? 'text-amber-400' : 'text-gray-600';
|
||||
const nodeLabel = stats.syncOutcome === 'ok' ? 'CONNECTED'
|
||||
const nodeLabel = stats.syncOutcome === 'ok' ? 'SEED SYNCED'
|
||||
: stats.syncOutcome === 'running' ? 'SYNCING'
|
||||
: stats.syncOutcome === 'error' || stats.syncOutcome === 'fork' ? 'RETRYING'
|
||||
: stats.nodeEnabled ? 'WAITING' : 'OFFLINE';
|
||||
|
||||
@@ -274,7 +274,7 @@ function hasKnownRouteName(value?: string | null): boolean {
|
||||
|
||||
function flightHasKnownRoute(entity: ReturnType<typeof findSelectedEntity>, dynamicRoute: DynamicRoute | null): boolean {
|
||||
if (!entity) return false;
|
||||
if (dynamicRoute?.orig_loc || dynamicRoute?.dest_loc) return true;
|
||||
if (dynamicRoute?.orig_loc && dynamicRoute?.dest_loc) return true;
|
||||
if (!('origin_loc' in entity) && !('origin_name' in entity)) return false;
|
||||
const flight = entity as Flight;
|
||||
return Boolean(
|
||||
@@ -683,19 +683,24 @@ const MaplibreViewer = ({
|
||||
const endpoint = isShip
|
||||
? `${API_BASE}/api/trail/ship/${encodeURIComponent(trailId)}`
|
||||
: `${API_BASE}/api/trail/flight/${encodeURIComponent(trailId)}`;
|
||||
fetch(endpoint)
|
||||
.then((res) => (res.ok ? res.json() : null))
|
||||
.then((payload) => {
|
||||
if (cancelled || !payload) return;
|
||||
const points = parseTrailPoints(payload.trail, kind);
|
||||
setSelectedTrailPoints(points.length >= 2 ? points : fallback);
|
||||
})
|
||||
.catch(() => {
|
||||
if (!cancelled) setSelectedTrailPoints(fallback);
|
||||
});
|
||||
const refreshSelectedTrail = () => {
|
||||
fetch(endpoint, { cache: 'no-store' })
|
||||
.then((res) => (res.ok ? res.json() : null))
|
||||
.then((payload) => {
|
||||
if (cancelled || !payload) return;
|
||||
const points = parseTrailPoints(payload.trail, kind);
|
||||
setSelectedTrailPoints(points.length >= 2 ? points : fallback);
|
||||
})
|
||||
.catch(() => {
|
||||
if (!cancelled) setSelectedTrailPoints(fallback);
|
||||
});
|
||||
};
|
||||
refreshSelectedTrail();
|
||||
const trailRefreshTimer = window.setInterval(refreshSelectedTrail, 30000);
|
||||
|
||||
return () => {
|
||||
cancelled = true;
|
||||
window.clearInterval(trailRefreshTimer);
|
||||
};
|
||||
}, [selectedEntity, data, dynamicRoute]);
|
||||
|
||||
|
||||
@@ -5953,7 +5953,7 @@ export default function MeshTerminal({ isOpen, launchToken = 0, onClose, onDmCou
|
||||
PARTICIPANT NODE
|
||||
</div>
|
||||
<div className="mt-1 text-sm leading-5 text-slate-400">
|
||||
Backend bootstrap is configured; activate the participant node to sync the public testnet seed without Wormhole.
|
||||
Backend bootstrap is configured; the participant node syncs the testnet seed over the private seed lane.
|
||||
</div>
|
||||
</div>
|
||||
<div className="border border-cyan-500/20 bg-cyan-500/8 px-3 py-1.5 text-[13px] tracking-[0.22em] text-cyan-200">
|
||||
@@ -6008,10 +6008,10 @@ export default function MeshTerminal({ isOpen, launchToken = 0, onClose, onDmCou
|
||||
|
||||
<div className="border border-amber-400/16 bg-amber-400/6 px-4 py-3 text-sm leading-6 text-amber-100/85">
|
||||
<div className="text-[13px] font-mono tracking-[0.24em] text-amber-300">
|
||||
WORMHOLE OPTIONAL FOR NODE SYNC
|
||||
PRIVATE SEED LANE
|
||||
</div>
|
||||
<div className="mt-2">
|
||||
Participant-node bootstrap, sync, and public chain hosting run on the backend lane without Wormhole.
|
||||
Participant-node bootstrap, sync, and public chain hosting use the backend private seed lane.
|
||||
</div>
|
||||
<div className="mt-2 text-amber-200/75">
|
||||
Turn Wormhole on for gates, obfuscated inbox, and the stronger obfuscated lane only.
|
||||
|
||||
@@ -480,19 +480,24 @@ function NewsFeedInner({ selectedEntity, regionDossier, regionDossierLoading, on
|
||||
}
|
||||
|
||||
let cancelled = false;
|
||||
fetch(`${API_BASE}/api/trail/flight/${encodeURIComponent(trailId)}`, { cache: 'no-store' })
|
||||
.then((res) => (res.ok ? res.json() : null))
|
||||
.then((payload) => {
|
||||
if (cancelled) return;
|
||||
const trail = Array.isArray(payload?.trail) ? payload.trail as FlightTrailPoint[] : [];
|
||||
setSelectedFlightTrail(trail);
|
||||
})
|
||||
.catch(() => {
|
||||
if (!cancelled) setSelectedFlightTrail([]);
|
||||
});
|
||||
const refreshSelectedFlightTrail = () => {
|
||||
fetch(`${API_BASE}/api/trail/flight/${encodeURIComponent(trailId)}`, { cache: 'no-store' })
|
||||
.then((res) => (res.ok ? res.json() : null))
|
||||
.then((payload) => {
|
||||
if (cancelled) return;
|
||||
const trail = Array.isArray(payload?.trail) ? payload.trail as FlightTrailPoint[] : [];
|
||||
setSelectedFlightTrail(trail);
|
||||
})
|
||||
.catch(() => {
|
||||
if (!cancelled) setSelectedFlightTrail([]);
|
||||
});
|
||||
};
|
||||
refreshSelectedFlightTrail();
|
||||
const trailRefreshTimer = window.setInterval(refreshSelectedFlightTrail, 30000);
|
||||
|
||||
return () => {
|
||||
cancelled = true;
|
||||
window.clearInterval(trailRefreshTimer);
|
||||
};
|
||||
}, [selectedEntity?.id, selectedEntity?.type]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user