[fix](trx-frontend-http): show aprs and ais bookmarks in background decode

Co-authored-by: OpenAI Codex <codex@openai.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-03-12 23:03:57 +01:00
parent 95fccd3da6
commit bdd3d29374
2 changed files with 21 additions and 3 deletions
@@ -111,11 +111,16 @@
function bookmarkDecoderKinds(bookmark) {
const decoders = Array.isArray(bookmark && bookmark.decoders) ? bookmark.decoders : [];
return decoders
const supported = decoders
.map(function (item) { return String(item || "").trim().toLowerCase(); })
.filter(function (item, index, arr) {
return SUPPORTED_DECODERS.includes(item) && arr.indexOf(item) === index;
});
if (supported.length > 0) return supported;
const mode = String(bookmark && bookmark.mode || "").trim().toUpperCase();
if (mode === "AIS") return ["ais"];
if (mode === "PKT") return ["aprs"];
return supported;
}
function renderBookmarkPick() {
@@ -210,7 +210,7 @@ impl BackgroundDecodeManager {
freq_hz: bookmark.map(|item| item.freq_hz),
mode: bookmark.map(|item| item.mode.clone()),
decoder_kinds: bookmark
.map(|item| supported_decoder_kinds(&item.decoders))
.map(bookmark_supported_decoder_kinds)
.unwrap_or_default(),
state: "inactive".to_string(),
channel_kind: None,
@@ -345,7 +345,7 @@ impl BackgroundDecodeManager {
continue;
};
let decoder_kinds = supported_decoder_kinds(&bookmark.decoders);
let decoder_kinds = bookmark_supported_decoder_kinds(bookmark);
let mut status = BackgroundDecodeBookmarkStatus {
bookmark_id: bookmark.id.clone(),
bookmark_name: Some(bookmark.name.clone()),
@@ -525,6 +525,19 @@ fn supported_decoder_kinds(decoders: &[String]) -> Vec<String> {
out
}
fn bookmark_supported_decoder_kinds(bookmark: &Bookmark) -> Vec<String> {
let explicit = supported_decoder_kinds(&bookmark.decoders);
if !explicit.is_empty() {
return explicit;
}
match bookmark.mode.trim().to_ascii_uppercase().as_str() {
"AIS" => vec!["ais".to_string()],
"PKT" => vec!["aprs".to_string()],
_ => Vec::new(),
}
}
fn channel_matches_bookmark(channel: &ClientChannel, bookmark: &Bookmark) -> bool {
channel.freq_hz == bookmark.freq_hz && normalized_mode(&channel.mode) == normalized_mode(&bookmark.mode)
}