diff --git a/background/index.js b/background/index.js
index 67597f1..24744cd 100644
--- a/background/index.js
+++ b/background/index.js
@@ -1,20 +1,20 @@
-const fetchJson = (url) => {
+function fetchJson(url) {
return fetch(url).then((response) => (response.json()));
-};
+}
-const fetchCalendar = (days = 28) => {
+function fetchCalendar(days = 28) {
let url = `${Config.calenderUrl}?o=json`;
if (days) {
url += `&r=${days}`;
}
return fetchJson(url);
-};
+}
-const fetchSpaceApi = () => {
+function fetchSpaceApi() {
return fetchJson(Config.spaceApiUrl);
-};
+}
-const updateBadge = (open) => {
+async function updateBadge(open) {
let badgeText, badgeColor;
if (open) {
badgeText = browser.browserAction.setBadgeText({text: 'open'});
@@ -23,56 +23,58 @@ const updateBadge = (open) => {
badgeText = browser.browserAction.setBadgeText({text: ''});
badgeColor = browser.browserAction.setBadgeBackgroundColor({color: null});
}
- Promise.all([badgeText, badgeColor])
- .then()
- .catch((error) => {
- console.error(error);
- });
-};
+ try {
+ await Promise.all([badgeText, badgeColor]);
+ } catch (error) {
+ console.error(error);
+ }
+}
-const sendNotification = (open) => {
+function sendNotification(open) {
browser.notifications.create('notification-id', {
type: 'basic',
iconUrl: browser.runtime.getURL('icons/logo.svg'),
title: 'Space Status',
message: `Space ist jetzt ${open ? 'offen' : 'geschlossen'}.`
});
-};
+}
-const fetchNewData = () => {
- fetchCalendar().then((json) => {
+async function fetchNewData() {
+ try {
+ const json = await fetchCalendar();
window.calendar = json;
- }).catch((error) => {
+ } catch (error) {
console.error(error);
- });
+ }
- fetchSpaceApi().then((json) => {
+ try {
+ const json = await fetchSpaceApi();
if (window.spaceApi && window.spaceApi.state.open !== json.state.open) {
sendNotification(json.state.open)
}
window.spaceApi = json;
updateBadge(window.spaceApi.state.open);
- }).catch((error) => {
+ } catch (error) {
console.error(error);
- });
-};
+ }
+}
let intervalHandler = null;
-const stopFetching = () => {
+function stopFetching() {
if (intervalHandler !== null) {
clearInterval(intervalHandler);
intervalHandler = null;
}
-};
-const startFetching = () => {
+}
+function startFetching() {
fetchNewData();
if (intervalHandler === null) {
intervalHandler = setInterval(() => {
fetchNewData();
}, Config.refreshTimeout);
}
-};
+}
window.addEventListener('offline', () => {
stopFetching();
diff --git a/popup/index.js b/popup/index.js
index d361dad..b237e8b 100644
--- a/popup/index.js
+++ b/popup/index.js
@@ -1,25 +1,32 @@
-Array.from(document.getElementsByClassName('link')).forEach((element) => {
- element.addEventListener('click', (event) => {
- const newTab = browser.tabs.create({
- url: event.currentTarget.dataset.url
- });
- newTab.then((data) => {
- // console.log(data);
- }).catch((error) => {
- console.error(error);
- });
+async function linkElementClickListener(event) {
+ try {
+ const tab = await browser.tabs.create({url: event.currentTarget.dataset.url});
+ // console.log(tab);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+async function init() {
+ const linkElements = Array.from(document.getElementsByClassName('link'));
+ linkElements.forEach((linkElement) => {
+ linkElement.addEventListener('click', linkElementClickListener);
});
-});
-browser.runtime.getBackgroundPage().then((page) => {
- updateNextEvent(page.calendar);
- updateSpaceApiJson(page.spaceApi);
- updateState(page.spaceApi);
-}).catch((error) => {
- console.error(error);
-});
+ try {
+ const page = await browser.runtime.getBackgroundPage();
+ console.log(page);
-const updateNextEvent = (nextEvents) => {
+ updateNextEvent(page.calendar);
+ updateSpaceApiJson(page.spaceApi);
+ updateState(page.spaceApi);
+ } catch (error) {
+ console.error(error);
+ }
+}
+init();
+
+function updateNextEvent(nextEvents) {
const calendarElement = document.getElementById('calendar');
calendarElement.innerText = '';
@@ -54,18 +61,18 @@ const updateNextEvent = (nextEvents) => {
}
calendarElement.append(divElement);
});
-};
+}
-const updateSpaceApiJson = (spaceApi) => {
+function updateSpaceApiJson(spaceApi) {
const spaceApiElement = document.querySelector('#space-api code');
const json = JSON.stringify(spaceApi, null, 2).replace(/ /g, ' ').replace(/\n/g, '
');
spaceApiElement.innerHTML = json;
// const jsonNode = document.createTextNode(json);
// spaceApiElement.innerText = '';
// spaceApiElement.append(jsonNode);
-};
+}
-const updateState = (spaceApi) => {
+function updateState(spaceApi) {
const stateElement = document.getElementById('state');
const since = new Date(spaceApi.state.lastchange * 1000);
const sinceStr = ` seit `;
@@ -74,4 +81,4 @@ const updateState = (spaceApi) => {
} else {
stateElement.innerHTML = `Geschlossen ${sinceStr}`;
}
-};
+}