faster data fetching, badge improvements

This commit is contained in:
Thomas Rupprecht 2022-12-25 01:26:20 +01:00
parent 489d675ba8
commit c3cf1e9b96
4 changed files with 42 additions and 17 deletions

View file

@ -48,5 +48,14 @@
}, },
"closed": { "closed": {
"message": "geschlossen" "message": "geschlossen"
},
"badgeOpen": {
"message": "open"
},
"badgeClosed": {
"message": ""
},
"badgeEvent": {
"message": ""
} }
} }

View file

@ -48,5 +48,14 @@
}, },
"closed": { "closed": {
"message": "closed" "message": "closed"
},
"badgeOpen": {
"message": "open"
},
"badgeClosed": {
"message": ""
},
"badgeEvent": {
"message": ""
} }
} }

View file

@ -30,28 +30,33 @@ function fetchSpaceApi() {
async function fetchNewData() { async function fetchNewData() {
try { try {
const calendarJson = await fetchCalendar(); const result = await Promise.allSettled([fetchCalendar(), fetchSpaceApi()]);
window.calendar = calendarJson; const calendarJson = result[0].value;
} catch (error) { const spaceApiJson = result[1].value;
console.error(error);
}
try { if (spaceApiJson) {
const spaceApiJson = await fetchSpaceApi(); const now = new Date();
const eventActive = calendarJson?.some((event) => (
new Date(event.begin) <= now && now <= new Date(event.end)
)) ?? false;
await browser.browserAction.setBadgeBackgroundColor({color: Config.openColor}); const badgeText = browser.i18n.getMessage(spaceApiJson.state.open ? 'badgeOpen' : eventActive ? 'badgeEvent' : 'badgeClosed');
await browser.browserAction.setBadgeText({text: spaceApiJson.state.open ? 'open' : ''}); const badgeBgColor = spaceApiJson.state.open ? Config.openColor : eventActive ? Config.eventColor : Config.closedColor;
await browser.browserAction.setBadgeText({text: badgeText});
await browser.browserAction.setBadgeBackgroundColor({color: badgeBgColor});
if (window.spaceApi && window.spaceApi.state.open !== spaceApiJson.state.open) { if (window.spaceApi && window.spaceApi.state.open !== spaceApiJson.state.open) {
const state = browser.i18n.getMessage(spaceApiJson.state.open ? 'open' : 'closed'); const state = browser.i18n.getMessage(spaceApiJson.state.open ? 'open' : 'closed');
await browser.notifications.create('status-change', { await browser.notifications.create('status-change', {
type: 'basic', type: 'basic',
title: browser.i18n.getMessage('stateNotificationTitle'), title: browser.i18n.getMessage('stateNotificationTitle'),
message: browser.i18n.getMessage('stateNotificationMessage', state), message: browser.i18n.getMessage('stateNotificationMessage', state),
iconUrl: browser.runtime.getURL('src/icons/favicon.svg') iconUrl: browser.runtime.getURL('src/icons/favicon.svg')
}); });
}
} }
window.calendar = calendarJson;
window.spaceApi = spaceApiJson; window.spaceApi = spaceApiJson;
} catch (error) { } catch (error) {
console.error(error); console.error(error);

View file

@ -3,6 +3,8 @@ export default {
spaceApiUrl: 'https://www.usrspace.at/spaceapi.json', spaceApiUrl: 'https://www.usrspace.at/spaceapi.json',
calenderUrl: 'https://www.usrspace.at/calendar.php', calenderUrl: 'https://www.usrspace.at/calendar.php',
openColor: '#33cc33', openColor: '#33cc33',
closedColor: '#cc3333',
eventColor: '#9933cc',
quickLinks: [ quickLinks: [
{ {
url: 'https://www.usrspace.at/', url: 'https://www.usrspace.at/',