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