Release 1.7.1
This commit is contained in:
@@ -365,22 +365,19 @@
|
||||
}
|
||||
|
||||
async function refreshTickerOnce() {
|
||||
// Disabled or missing URL: hide and clear immediately.
|
||||
if (!tickerConfig || !tickerConfig.enabled) {
|
||||
if (tickerEl) tickerEl.style.display = 'none';
|
||||
document.body.classList.remove('has-ticker');
|
||||
setTickerHeadlines([]);
|
||||
return;
|
||||
}
|
||||
// No URL: keep hidden.
|
||||
if (!tickerConfig.rss_url || !String(tickerConfig.rss_url).trim()) {
|
||||
if (tickerEl) tickerEl.style.display = 'none';
|
||||
document.body.classList.remove('has-ticker');
|
||||
setTickerHeadlines([]);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const data = await fetchTickerHeadlines();
|
||||
if (!data || !data.enabled) {
|
||||
if (tickerEl) tickerEl.style.display = 'none';
|
||||
document.body.classList.remove('has-ticker');
|
||||
setTickerHeadlines([]);
|
||||
return;
|
||||
}
|
||||
setTickerHeadlines(data.headlines || []);
|
||||
@@ -402,6 +399,13 @@
|
||||
tickerInterval = setInterval(refreshTickerOnce, getTickerPollSeconds() * 1000);
|
||||
}
|
||||
|
||||
function stopTickerPolling() {
|
||||
if (tickerInterval) {
|
||||
clearInterval(tickerInterval);
|
||||
tickerInterval = null;
|
||||
}
|
||||
}
|
||||
|
||||
function clearStage() {
|
||||
if (timer) { clearTimeout(timer); timer = null; }
|
||||
stage.innerHTML = '';
|
||||
@@ -551,7 +555,11 @@
|
||||
tickerConfig = (playlist && playlist.ticker) ? playlist.ticker : null;
|
||||
applyTickerStyle(tickerConfig);
|
||||
await refreshTickerOnce();
|
||||
startTickerPolling();
|
||||
if (tickerConfig && tickerConfig.enabled) {
|
||||
startTickerPolling();
|
||||
} else {
|
||||
stopTickerPolling();
|
||||
}
|
||||
next();
|
||||
} catch (e) {
|
||||
clearStage();
|
||||
@@ -586,16 +594,31 @@
|
||||
const newTickerCfg = (playlist && playlist.ticker) ? playlist.ticker : null;
|
||||
const oldTickerStr = JSON.stringify(tickerConfig);
|
||||
const newTickerStr = JSON.stringify(newTickerCfg);
|
||||
const oldEnabled = !!(tickerConfig && tickerConfig.enabled);
|
||||
const newEnabled = !!(newTickerCfg && newTickerCfg.enabled);
|
||||
const oldRssUrl = (tickerConfig && tickerConfig.rss_url) ? String(tickerConfig.rss_url) : '';
|
||||
const newRssUrl = (newTickerCfg && newTickerCfg.rss_url) ? String(newTickerCfg.rss_url) : '';
|
||||
tickerConfig = newTickerCfg;
|
||||
applyTickerStyle(tickerConfig);
|
||||
if (oldTickerStr !== newTickerStr) {
|
||||
// If RSS URL changed, refetch. Otherwise just rerender to apply speed/style immediately.
|
||||
if (oldRssUrl !== newRssUrl) {
|
||||
// Ensure enable/disable toggles are applied immediately (no reload required).
|
||||
if (oldEnabled !== newEnabled) {
|
||||
if (!newEnabled) {
|
||||
// Hide and stop polling.
|
||||
tickerLastHeadlines = [];
|
||||
stopTickerPolling();
|
||||
setTickerHeadlines([]);
|
||||
} else {
|
||||
// Re-enable: fetch now and restart headline polling.
|
||||
await refreshTickerOnce();
|
||||
startTickerPolling();
|
||||
}
|
||||
} else if (oldRssUrl !== newRssUrl) {
|
||||
// RSS URL changed: refetch now.
|
||||
await refreshTickerOnce();
|
||||
} else {
|
||||
rerenderTickerFromCache();
|
||||
// Style/speed change only: rerender from cache to apply instantly.
|
||||
if (newEnabled) rerenderTickerFromCache();
|
||||
}
|
||||
}
|
||||
if (oldStr !== newStr) {
|
||||
|
||||
Reference in New Issue
Block a user