[fix](trx-frontend-http): fix WEFAX toggle button and bookmark decoder wiring

Per-entry caching in _ensureDecoderToggles prevents stale guard from
blocking re-scan. Direct syncWefaxToggle path ensures dataset.enabled
stays current for bookmark prefill.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-04-04 07:54:26 +02:00
parent 0fcd45f1ba
commit e467ba0537
2 changed files with 18 additions and 1 deletions
@@ -469,10 +469,11 @@ let decodeHistoryRetentionMin = 24 * 60;
// field name (e.g. "ft8_decode_enabled"). Lazily populated on first SSE.
const _decoderToggles = {};
function _ensureDecoderToggles() {
if (Object.keys(_decoderToggles).length > 0) return;
if (decoderRegistry.length === 0) return;
for (const d of decoderRegistry) {
if (d.activation !== "toggle") continue;
const key = d.id.replace(/-/g, "_") + "_decode_enabled";
if (_decoderToggles[key]) continue;
const el = document.getElementById(d.id + "-decode-toggle-btn");
if (el) _decoderToggles[key] = { el, last: null, label: d.label };
}
@@ -3368,6 +3369,10 @@ function render(update) {
for (const [key, entry] of Object.entries(_decoderToggles)) {
syncDecoderToggle(entry, !!update[key], entry.label);
}
// WEFAX toggle sync (plugin-owned, belt-and-suspenders alongside _decoderToggles).
if (typeof update.wefax_decode_enabled === "boolean" && window.syncWefaxToggle) {
window.syncWefaxToggle(update.wefax_decode_enabled);
}
// Recorder state sync.
if (typeof update.recorder_enabled === "boolean" && window._syncRecorderState) {
window._syncRecorderState(update.recorder_enabled);