Files
tv/web/js/app.js
T
2026-08-26 18:28:49 -05:00

42 lines
1.1 KiB
JavaScript

/*
APP — shared chrome for every page: footer API label, toast notifications.
(Settings moved to its own page: settings.html)
*/
(function () {
'use strict';
function initChrome() {
const label = document.getElementById('apiBaseLabel');
if (label) {
const base = SR.config.getBase();
label.textContent = base;
label.href = base;
}
}
let toastTimer = null;
function toast(message, isError) {
let el = document.getElementById('toast');
if (!el) {
el = document.createElement('div');
el.id = 'toast';
el.className = 'toast';
el.setAttribute('role', 'status');
document.body.appendChild(el);
}
el.textContent = message;
el.classList.toggle('toast--error', !!isError);
el.classList.add('toast--show');
clearTimeout(toastTimer);
toastTimer = setTimeout(() => el.classList.remove('toast--show'), 4500);
}
function showError(err, fallback) {
toast(err && err.message ? err.message : fallback || 'Something went wrong', true);
}
window.SR = window.SR || {};
SR.app = { initChrome, toast, showError };
})();