forked from XimeX/usrspace-browser-addon
use browser.alarms api
This commit is contained in:
parent
6b69d7cd6a
commit
de70d42b2b
|
@ -11,7 +11,7 @@ async function fetchJson(url) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {number} days
|
* @param {number} days
|
||||||
* @returns {Promise<object>}
|
* @returns {Promise<Array<object>>}
|
||||||
*/
|
*/
|
||||||
function fetchCalendar(days = 28) {
|
function fetchCalendar(days = 28) {
|
||||||
let url = `${Config.calenderUrl}?o=json`;
|
let url = `${Config.calenderUrl}?o=json`;
|
||||||
|
@ -66,25 +66,31 @@ async function fetchNewData() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let intervalHandler = null;
|
/**
|
||||||
|
* @param {Alarm} alarm
|
||||||
function stopFetching() {
|
*/
|
||||||
if (intervalHandler !== null) {
|
function handleAlarm(alarm) {
|
||||||
clearInterval(intervalHandler);
|
if (alarm.name === 'fetchData') {
|
||||||
intervalHandler = null;
|
fetchNewData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function startFetching() {
|
function startFetching() {
|
||||||
fetchNewData();
|
fetchNewData();
|
||||||
if (intervalHandler === null) {
|
|
||||||
intervalHandler = setInterval(() => {
|
browser.alarms.onAlarm.addListener(handleAlarm);
|
||||||
fetchNewData();
|
|
||||||
}, Config.refreshTimeout);
|
const now = new Date();
|
||||||
}
|
now.setMinutes(Math.ceil((now.getMinutes() + 1) / Config.refreshTimeout) * Config.refreshTimeout, 0, 0);
|
||||||
|
browser.alarms.create('fetchData', {
|
||||||
|
when: now.getTime(),
|
||||||
|
periodInMinutes: Config.refreshTimeout,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('offline', () => {
|
window.addEventListener('offline', async () => {
|
||||||
stopFetching();
|
browser.alarms.onAlarm.removeListener(handleAlarm);
|
||||||
|
await browser.alarms.clear('fetchData');
|
||||||
});
|
});
|
||||||
window.addEventListener('online', () => {
|
window.addEventListener('online', () => {
|
||||||
startFetching();
|
startFetching();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
export default {
|
export default {
|
||||||
refreshTimeout: 1000 * 60 * 5, // 5min,
|
refreshTimeout: 5,
|
||||||
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',
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
"default_locale": "de",
|
"default_locale": "de",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"https://www.usrspace.at/*",
|
"https://www.usrspace.at/*",
|
||||||
|
"alarms",
|
||||||
"notifications",
|
"notifications",
|
||||||
"storage",
|
"storage",
|
||||||
"webRequest"
|
"webRequest"
|
||||||
|
|
Loading…
Reference in a new issue