diff --git a/static/js/emailLibrary.js b/static/js/emailLibrary.js index 34c8e2cd6..3747db411 100644 --- a/static/js/emailLibrary.js +++ b/static/js/emailLibrary.js @@ -321,6 +321,12 @@ async function _loadEmailReminderBellVisibility() { _syncEmailReminderBellVisibility(false); } } +// Live-update the bell when the reminder channel changes in Settings, +// so the user doesn't have to reopen Email to see the change apply. +window.addEventListener('odysseus-reminder-channel-changed', (e) => { + const ch = e?.detail?.channel; + _syncEmailReminderBellVisibility(ch === 'email'); +}); function _readCssPx(name) { const v = getComputedStyle(document.documentElement).getPropertyValue(name); diff --git a/static/js/settings.js b/static/js/settings.js index 5c44b299c..2dbfd3f4b 100644 --- a/static/js/settings.js +++ b/static/js/settings.js @@ -2645,6 +2645,9 @@ async function initReminderSettings() { if (hint) hint.textContent = CHANNEL_HINTS[channelSel.value] || ''; syncChannelRows(); save({ reminder_channel: channelSel.value }); + // Email reminder bell visibility tracks this — broadcast so the + // email library can re-evaluate without waiting for a re-open. + try { window.dispatchEvent(new CustomEvent('odysseus-reminder-channel-changed', { detail: { channel: channelSel.value } })); } catch (_) {} }); if (emailToIn) { let emailDebounce;