diff --git a/public/app.js b/public/app.js index 5e6ec3b..6fb7c28 100644 --- a/public/app.js +++ b/public/app.js @@ -795,5 +795,24 @@ function showToast(msg) { }, 3200); } +// ── Static button bindings (replaces inline onclick – blocked by CSP script-src-attr) ── +document.getElementById('btn-logout') ?.addEventListener('click', logout); +document.getElementById('btn-daily-challenge') ?.addEventListener('click', startDailyChallenge); +document.getElementById('btn-start-practice') ?.addEventListener('click', startPractice); +document.getElementById('btn-stop-practice') ?.addEventListener('click', stopPracticeUI); +document.getElementById('match-ready-btn') ?.addEventListener('click', setReady); +document.getElementById('btn-leave-match') ?.addEventListener('click', leaveMatch); +document.getElementById('btn-create-user') ?.addEventListener('click', createUser); + +// D-pad: practice and match both use data-dir buttons +document.getElementById('practice-dpad')?.addEventListener('click', (e) => { + const dir = e.target.closest('[data-dir]')?.dataset.dir; + if (dir) dpadInput(dir); +}); +document.getElementById('match-dpad')?.addEventListener('click', (e) => { + const dir = e.target.closest('[data-dir]')?.dataset.dir; + if (dir) dpadInput(dir); +}); + // ── Init ────────────────────────────────────────────────────────────────────── document.addEventListener('DOMContentLoaded', checkAuth); diff --git a/public/index.html b/public/index.html index db7184c..4f97876 100644 --- a/public/index.html +++ b/public/index.html @@ -26,7 +26,7 @@
@@ -122,7 +122,7 @@