From 6129b3fb133639708724ef08b18ac7c600f3d2ec Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:17:20 +0000 Subject: [PATCH] Optimize UI render loops with reduce in ui_helpers.js Co-authored-by: TauNeutrino <1600410+TauNeutrino@users.noreply.github.com> --- src/actions.js | 3 ++- src/ui_helpers.js | 25 ++++++++++++++----------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/actions.js b/src/actions.js index 54d2ff6..2ea10b4 100644 --- a/src/actions.js +++ b/src/actions.js @@ -483,6 +483,7 @@ export async function refreshFlaggedItems() { if (updated) { saveMenuCache(); updateLastUpdatedTime(new Date().toISOString()); + localStorage.setItem('kantine_flagged_items_last_checked', new Date().toISOString()); updateAlarmBell(); renderVisibleWeeks(); } @@ -595,7 +596,7 @@ export async function pollFlaggedItems() { await new Promise(r => setTimeout(r, 200)); } } - localStorage.setItem('kantine_last_checked', new Date().toISOString()); + localStorage.setItem('kantine_flagged_items_last_checked', new Date().toISOString()); updateAlarmBell(); } diff --git a/src/ui_helpers.js b/src/ui_helpers.js index 43b0607..3a53671 100644 --- a/src/ui_helpers.js +++ b/src/ui_helpers.js @@ -242,7 +242,7 @@ export function createDayCard(day) { header.className = 'card-header'; const dateStr = cardDate.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit' }); - const badgesHtml = menuBadges.map(code => `${code}`).join(''); + const badgesHtml = menuBadges.reduce((acc, code) => acc + `${code}`, ''); let headerClass = ''; const hasAnyOrder = day.items && day.items.some(item => { @@ -358,10 +358,7 @@ export function createDayCard(day) { let tagsHtml = ''; if (matchedTags.length > 0) { - let badges = ''; - for (const t of matchedTags) { - badges += `star${escapeHtml(t)}`; - } + const badges = matchedTags.reduce((acc, t) => acc + `star${escapeHtml(t)}`, ''); tagsHtml = `
${badges}
`; } @@ -732,15 +729,21 @@ export function updateAlarmBell() { if (anyAvailable) break; } - let lastUpdatedStr = localStorage.getItem('kantine_last_checked'); + const lastCheckedStr = localStorage.getItem('kantine_last_checked'); + const flaggedLastCheckedStr = localStorage.getItem('kantine_flagged_items_last_checked'); + + let latestTime = 0; + if (lastCheckedStr) latestTime = Math.max(latestTime, new Date(lastCheckedStr).getTime()); + if (flaggedLastCheckedStr) latestTime = Math.max(latestTime, new Date(flaggedLastCheckedStr).getTime()); + let timeStr = 'gerade eben'; - if (!lastUpdatedStr) { - lastUpdatedStr = new Date().toISOString(); - localStorage.setItem('kantine_last_checked', lastUpdatedStr); + if (latestTime === 0) { + const now = new Date().toISOString(); + localStorage.setItem('kantine_last_checked', now); + latestTime = new Date(now).getTime(); } - const lastUpdated = new Date(lastUpdatedStr); - timeStr = getRelativeTime(lastUpdated); + timeStr = getRelativeTime(new Date(latestTime)); bellBtn.title = `Zuletzt geprüft: ${timeStr}`;