Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
863a6d8fd4 | ||
|
|
b252717f6b |
@@ -7424,7 +7424,7 @@ function connectDecode() {
|
||||
return;
|
||||
}
|
||||
if (data.type === "group") {
|
||||
const messages = Array.isArray(data.messages) ? data.messages.filter((message) => isRecord2(message) && typeof message.type === "string") : [];
|
||||
const messages = Array.isArray(data.messages) ? data.messages.filter((message) => isRecord2(message)) : [];
|
||||
enqueueDecodeHistoryGroup(typeof data.kind === "string" ? data.kind : "", messages);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -6366,7 +6366,12 @@ function connectDecode() {
|
||||
}
|
||||
if (data.type === "group") {
|
||||
const messages = Array.isArray(data.messages)
|
||||
? data.messages.filter((message): message is DecodeMessage => isRecord(message) && typeof message.type === "string")
|
||||
// Stored records carry only decoder fields — an AIS entry has mmsi,
|
||||
// lat, lon and so on, and no `type`. That field identifies live SSE
|
||||
// frames; history is already grouped, and the group's kind is
|
||||
// delivered alongside these messages, so requiring it here discarded
|
||||
// every restored record silently.
|
||||
? data.messages.filter((message): message is DecodeMessage => isRecord(message))
|
||||
: [];
|
||||
enqueueDecodeHistoryGroup(typeof data.kind === "string" ? data.kind : "", messages);
|
||||
return;
|
||||
|
||||
@@ -30,9 +30,28 @@ const rigItems = ["rig-a", "rig-b"].map((remote) => ({
|
||||
const rigsResponse = { rigs: rigItems, active_remote: "rig-a" };
|
||||
const selectedRigs = [];
|
||||
|
||||
// A realistic decoder registry. Serving an empty one hid most of the
|
||||
// application from this test: the decoder sub-tabs, their panels, the decode
|
||||
// toggles and the bookmark decoder checkboxes are all built from it, so with
|
||||
// no decoders only three of thirteen sub-tabs existed and none of the decoder
|
||||
// UI was ever constructed.
|
||||
const decoderRegistry = [
|
||||
{ id: "ft8", label: "FT8", activation: "toggle", active_modes: ["USB"] },
|
||||
{ id: "ft4", label: "FT4", activation: "toggle", active_modes: ["USB"] },
|
||||
{ id: "ft2", label: "FT2", activation: "toggle", active_modes: ["USB"] },
|
||||
{ id: "wspr", label: "WSPR", activation: "toggle", active_modes: ["USB"] },
|
||||
{ id: "cw", label: "CW", activation: "toggle", active_modes: ["CW", "CWR"] },
|
||||
{ id: "sat", label: "SAT", activation: "toggle", active_modes: ["FM"] },
|
||||
{ id: "wefax", label: "WEFAX", activation: "toggle", active_modes: ["USB"] },
|
||||
{ id: "ais", label: "AIS", activation: "toggle", active_modes: ["FM"] },
|
||||
{ id: "aprs", label: "APRS", activation: "toggle", active_modes: ["FM"] },
|
||||
{ id: "hf-aprs", label: "HF APRS", activation: "toggle", active_modes: ["USB"] },
|
||||
{ id: "vdes", label: "VDES", activation: "toggle", active_modes: ["FM"] },
|
||||
].map((decoder) => ({ ...decoder, background_decode: false, bookmark_selectable: true }));
|
||||
|
||||
const jsonRoutes = new Map([
|
||||
["/auth/session", { authenticated: true, role: "control", auth_disabled: true }],
|
||||
["/decoders", []],
|
||||
["/decoders", decoderRegistry],
|
||||
["/rigs", rigsResponse],
|
||||
["/status", {
|
||||
info: {
|
||||
|
||||
Reference in New Issue
Block a user