mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 02:44:02 +00:00
fix(status): stop false LOAD FAILED from a relayed adsb.lol 429 and the installations zoom prompt
Two independent triggers turned the global status chip red while every layer was still populated (reproduced at JFK in Cockpit; timeline in the issue). adsb.lol proxy: a non-OK upstream status was relayed verbatim even with a 12 s-old cache in hand, and the browser layer answers a 429 with a 45 s cooldown in which every refresh reports "adsb.lol rate limited" without a network call. The proxy now serves its cached body as STALE on a 429/5xx and backs off from upstream for Retry-After (bounded), mirroring the OpenSky proxy. A failure with nothing cached is still relayed. Mapped installations: the "zoom in" guidance was stored in `error`, so the manager reported a refresh failure and the chip a LOAD FAILED whenever the view could not be bounded (Cockpit looks at the horizon). The status is now set without an error string; the row reads the prompt from `statusMessage`, and the chip ignores `error` for guidance statuses, matching the carve-out layerFeedState already has.
This commit is contained in:
1 parent
db49edf363
commit
1a9cfb1809
8 files changed
+200
-21
No files matched your search
@@ -685,3 +685,17 @@ test('the loading ticker never runs hidden and stops after loading and notices s
|
||||
'the resample handler must be removed on teardown',
|
||||
);
|
||||
});
|
||||
|
||||
test('a guidance status such as zoom-in never counts as a participant failure', () => {
|
||||
const zoomIn = { id: 'military-installations', name: 'Mapped Installations', enabled: true,
|
||||
stats: { status: 'zoom-in', error: 'Zoom in to load mapped installation context', loading: true, count: 0 } };
|
||||
const loading = aggregateLayerLoading([zoomIn]);
|
||||
assert.equal(loading.records[0].error, null);
|
||||
assert.equal(loading.records[0].degraded, false);
|
||||
let state = reduceLoadingFeedback(createLoadingFeedbackState(), loading, 1000);
|
||||
state = reduceLoadingFeedback(state, loading, 1200);
|
||||
const settled = aggregateLayerLoading([{ ...zoomIn, stats: { ...zoomIn.stats, loading: false } }]);
|
||||
state = reduceLoadingFeedback(state, settled, 1500);
|
||||
assert.equal(state.terminal, 'complete');
|
||||
assert.equal(presentLoadingFeedback(state, settled, 1500).label, 'MAPPED SITES LOADED');
|
||||
});
|
||||
Reference in new issue
Block a user