feat(dxhunter): the chase gets a page of its own, and US states a switch
The chase switches were born on the DX Cluster page because the cluster was the only thing that drew their badges. They now decide what the FT decode list and Chase new say as well, and settings that govern three screens should not live under the name of one of them. They move to a DXHunter page — named for what it is about, and for what is meant to land beside it as more of DXHunter's ideas are ported over. US states join the switchable markers, gated the same way as POTA, counties, prefixes and squares: badge, filter chip and display marker, all from the one chaseAllows question.
This commit is contained in:
@@ -20,7 +20,7 @@ export type SpotDisplayOptions = {
|
||||
// keep being computed; only the telling stops, so ticking the box back on
|
||||
// needs no rescan.
|
||||
chasePota: boolean; chaseSota: boolean;
|
||||
chaseCounty: boolean; chasePfx: boolean; chaseGrid: boolean;
|
||||
chaseCounty: boolean; chasePfx: boolean; chaseGrid: boolean; chaseState: boolean;
|
||||
};
|
||||
|
||||
// chasePota/chaseSota read the switches directly — for the places that show a
|
||||
@@ -37,6 +37,9 @@ export function chaseCounty(): boolean {
|
||||
export function chasePfx(): boolean {
|
||||
try { return localStorage.getItem('opslog.chasePfx') !== '0'; } catch { return true; }
|
||||
}
|
||||
export function chaseState(): boolean {
|
||||
try { return localStorage.getItem('opslog.chaseState') !== '0'; } catch { return true; }
|
||||
}
|
||||
// chaseGrid mirrors the backend "chase new grids" setting (Settings writes the
|
||||
// mirror on load and on toggle) so the display layer can gate NEW GRID without
|
||||
// an async round-trip per row.
|
||||
@@ -61,6 +64,7 @@ export function chaseAllows(key: string): boolean {
|
||||
case 'new_grid': case 'grid': return chaseGrid();
|
||||
case 'new_pfx': case 'pfx': return chasePfx();
|
||||
case 'new_county': case 'cty': return chaseCounty();
|
||||
case 'new_state': case 'state': return chaseState();
|
||||
default: return true;
|
||||
}
|
||||
}
|
||||
@@ -78,7 +82,7 @@ export function readSpotDisplayOptions(): SpotDisplayOptions {
|
||||
// The EXPOSED flag only withdraws the two original switches; the chase
|
||||
// switches are live regardless.
|
||||
if (!SPOT_DISPLAY_OPTIONS_EXPOSED) {
|
||||
return { muteWorked: false, slotHighlight: false, chasePota: chasePota(), chaseSota: chaseSota(), chaseCounty: chaseCounty(), chasePfx: chasePfx(), chaseGrid: chaseGrid() };
|
||||
return { muteWorked: false, slotHighlight: false, chasePota: chasePota(), chaseSota: chaseSota(), chaseCounty: chaseCounty(), chasePfx: chasePfx(), chaseGrid: chaseGrid(), chaseState: chaseState() };
|
||||
}
|
||||
try {
|
||||
return {
|
||||
@@ -86,9 +90,10 @@ export function readSpotDisplayOptions(): SpotDisplayOptions {
|
||||
slotHighlight: localStorage.getItem('opslog.clusterSlotHighlight') === '1',
|
||||
chasePota: chasePota(), chaseSota: chaseSota(),
|
||||
chaseCounty: chaseCounty(), chasePfx: chasePfx(), chaseGrid: chaseGrid(),
|
||||
chaseState: chaseState(),
|
||||
};
|
||||
} catch {
|
||||
return { muteWorked: false, slotHighlight: false, chasePota: true, chaseSota: true, chaseCounty: true, chasePfx: true, chaseGrid: true };
|
||||
return { muteWorked: false, slotHighlight: false, chasePota: true, chaseSota: true, chaseCounty: true, chasePfx: true, chaseGrid: true, chaseState: true };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +105,7 @@ type Entry = {
|
||||
new_pota?: boolean;
|
||||
new_pfx?: boolean;
|
||||
new_grid?: boolean;
|
||||
new_state?: boolean;
|
||||
} | undefined;
|
||||
|
||||
// applySpotDisplay rewrites a status entry per the options, so every consumer —
|
||||
@@ -144,6 +150,9 @@ export function applySpotDisplay<T extends Entry>(s: T, o: SpotDisplayOptions):
|
||||
if (!o.chaseGrid && e.new_grid) {
|
||||
e = { ...e, new_grid: false } as NonNullable<T>;
|
||||
}
|
||||
if (!o.chaseState && e.new_state) {
|
||||
e = { ...e, new_state: false } as NonNullable<T>;
|
||||
}
|
||||
return e;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user