diff --git a/src/background.js b/src/background.js index ecab9f6..a8bc600 100644 --- a/src/background.js +++ b/src/background.js @@ -60,20 +60,11 @@ async function fetchNewData() { new Date(event.begin) <= now && now <= new Date(event.end) )) ?? false; - const badgeText = browser.i18n.getMessage(spaceApiJson.state.open ? 'badgeOpen' : eventActive ? 'badgeEvent' : 'badgeClosed'); - const badgeBgColor = spaceApiJson.state.open ? BADGE_COLORS.open : eventActive ? BADGE_COLORS.event : BADGE_COLORS.closed; - await browser.action.setBadgeText({text: badgeText}); - await browser.action.setBadgeBackgroundColor({color: badgeBgColor}); + await setBadgeStatus(spaceApiJson.state.open, eventActive); const {spaceApi} = await browser.storage.local.get('spaceApi'); if (spaceApi && spaceApi.state.open !== spaceApiJson.state.open) { - const state = browser.i18n.getMessage(spaceApiJson.state.open ? 'open' : 'closed'); - await browser.notifications.create('status-change', { - type: 'basic', - title: browser.i18n.getMessage('stateNotificationTitle'), - message: browser.i18n.getMessage('stateNotificationMessage', state), - iconUrl: browser.runtime.getURL('icons/favicon.svg'), - }); + await createStatusChangedNotification(spaceApiJson.state.open); } } @@ -86,6 +77,30 @@ async function fetchNewData() { } } +/** + * @param {boolean} open + * @param {boolean} eventActive + */ +async function setBadgeStatus(open, eventActive) { + const badgeText = browser.i18n.getMessage(open ? 'badgeOpen' : eventActive ? 'badgeEvent' : 'badgeClosed'); + const badgeBgColor = open ? BADGE_COLORS.open : eventActive ? BADGE_COLORS.event : BADGE_COLORS.closed; + await browser.action.setBadgeText({text: badgeText}); + await browser.action.setBadgeBackgroundColor({color: badgeBgColor}); +} + +/** + * @param {boolean} open + */ +async function createStatusChangedNotification(open) { + const stateL10n = browser.i18n.getMessage(open ? 'open' : 'closed'); + await browser.notifications.create('status-changed', { + type: 'basic', + title: browser.i18n.getMessage('stateNotificationTitle'), + message: browser.i18n.getMessage('stateNotificationMessage', stateL10n), + iconUrl: browser.runtime.getURL('icons/favicon.svg'), + }); +} + function init() { fetchNewData();