From 06c49ecec6008663e3d76374d8acaa770d6091ab Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Thu, 14 May 2026 01:30:35 -0400 Subject: [PATCH] feat(fusion_clock): NFC kiosk mock-tap debug shortcut Add Ctrl+Shift+T keyboard shortcut (guarded by debugEnabled / nfc_kiosk_debug setting) that prompts for a UID and fires _onEnrollTap or handleTap depending on currentState (ENROLL vs IDLE). Persists last-used UID in localStorage. Co-Authored-By: Claude Sonnet 4.6 --- .../static/src/js/fusion_clock_nfc_kiosk.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/fusion_clock/static/src/js/fusion_clock_nfc_kiosk.js b/fusion_clock/static/src/js/fusion_clock_nfc_kiosk.js index 4ec5503d..4a482a56 100644 --- a/fusion_clock/static/src/js/fusion_clock_nfc_kiosk.js +++ b/fusion_clock/static/src/js/fusion_clock_nfc_kiosk.js @@ -394,6 +394,27 @@ }); } + // ────────────────────────────────────────────────────────────── + // Mock-tap debug shortcut (only when fusion_clock.nfc_kiosk_debug = True) + // ────────────────────────────────────────────────────────────── + if (debugEnabled) { + document.addEventListener("keydown", (e) => { + if (e.ctrlKey && e.shiftKey && (e.key === "T" || e.key === "t")) { + e.preventDefault(); + const stored = localStorage.getItem("nfc_mock_uid") || "04:DE:AD:BE:EF:01"; + const uid = prompt(`Mock-tap UID (last used: ${stored}):`, stored); + if (!uid) return; + localStorage.setItem("nfc_mock_uid", uid); + if (currentState === STATE.ENROLL) { + _onEnrollTap(uid.toUpperCase()); + } else if (currentState === STATE.IDLE) { + handleTap(uid.toUpperCase()); + } + } + }); + console.info("[nfc-kiosk] mock-tap debug enabled — Ctrl+Shift+T to fire a tap"); + } + window.__nfcKiosk = { setState, STATE, photoRequired, debugEnabled, locationConfigured, handleTap, _onEnrollTap, // handleTap for mock-tap debug (Task 19)