diff --git a/server/player/index.html b/server/player/index.html index 23cf059..896f888 100644 --- a/server/player/index.html +++ b/server/player/index.html @@ -3282,8 +3282,24 @@ // ==================== UI Helpers ==================== function showStatus(msg) { - document.getElementById('statusOverlay').style.display = 'flex'; - document.getElementById('statusText').textContent = msg; + const overlay = document.getElementById('statusOverlay'); + if (!overlay) return; + overlay.style.display = 'flex'; + // #statusText can be GONE: the suspended-account branch replaces the whole overlay with its + // own markup, which does not contain it. Reading .textContent off null then threw a TypeError + // out of every later showStatus call — the player reported itself "crashed" on each refresh + // beat, and worse, showNothingScheduled() throws BEFORE arming its 30s re-check, so a screen + // whose dayparts had all closed was stranded on the stale suspended card with no retry. + // Rebuild the element rather than bail, so the message the caller wanted is actually shown. + let text = document.getElementById('statusText'); + if (!text) { + overlay.innerHTML = ''; + text = document.createElement('p'); + text.id = 'statusText'; + text.style.cssText = 'color:#94a3b8;font-size:20px;font-family:sans-serif;text-align:center'; + overlay.appendChild(text); + } + text.textContent = msg; } function hideStatus() {