Skip to content

Commit 221b672

Browse files
committed
refactor: move scheduleTimer to one place
1 parent e4ec8c3 commit 221b672

File tree

4 files changed

+27
-32
lines changed

4 files changed

+27
-32
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Thanks to: @dathbe.
1616
### Changed
1717

1818
- [clock] Add CSS to prevent line breaking of sunset/sunrise time display (#3816)
19+
- [refactor] Add new file `modules/default/server_utils.js` to move code used in several modules to one place
1920

2021
### Updated
2122

modules/default/calendar/calendarfetcher.js

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const https = require("node:https");
22
const ical = require("node-ical");
33
const Log = require("logger");
44
const NodeHelper = require("node_helper");
5+
const { scheduleTimer } = require("../server_utils");
56
const CalendarFetcherUtils = require("./calendarfetcherutils");
67

78
/**
@@ -65,31 +66,18 @@ const CalendarFetcher = function (url, reloadInterval, excludedEvents, maximumEn
6566
});
6667
} catch (error) {
6768
fetchFailedCallback(this, error);
68-
scheduleTimer();
69+
scheduleTimer(reloadTimer, reloadInterval, fetchCalendar);
6970
return;
7071
}
7172
this.broadcastEvents();
72-
scheduleTimer();
73+
scheduleTimer(reloadTimer, reloadInterval, fetchCalendar);
7374
})
7475
.catch((error) => {
7576
fetchFailedCallback(this, error);
76-
scheduleTimer();
77+
scheduleTimer(reloadTimer, reloadInterval, fetchCalendar);
7778
});
7879
};
7980

80-
/**
81-
* Schedule the timer for the next update.
82-
*/
83-
const scheduleTimer = function () {
84-
if (process.env.JEST_WORKER_ID === undefined) {
85-
// only set timer when not running in jest
86-
clearTimeout(reloadTimer);
87-
reloadTimer = setTimeout(function () {
88-
fetchCalendar();
89-
}, reloadInterval);
90-
}
91-
};
92-
9381
/* public methods */
9482

9583
/**

modules/default/newsfeed/newsfeedfetcher.js

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const iconv = require("iconv-lite");
55
const { htmlToText } = require("html-to-text");
66
const Log = require("logger");
77
const NodeHelper = require("node_helper");
8+
const { scheduleTimer } = require("../server_utils");
89

910
/**
1011
* Responsible for requesting an update on the set interval and broadcasting the data.
@@ -79,12 +80,12 @@ const NewsfeedFetcher = function (url, reloadInterval, encoding, logFeedWarnings
7980

8081
parser.on("error", (error) => {
8182
fetchFailedCallback(this, error);
82-
scheduleTimer();
83+
scheduleTimer(reloadTimer, reloadIntervalMS, fetchNews);
8384
});
8485

8586
//"end" event is not broadcast if the feed is empty but "finish" is used for both
8687
parser.on("finish", () => {
87-
scheduleTimer();
88+
scheduleTimer(reloadTimer, reloadIntervalMS, fetchNews);
8889
});
8990

9091
parser.on("ttl", (minutes) => {
@@ -120,23 +121,10 @@ const NewsfeedFetcher = function (url, reloadInterval, encoding, logFeedWarnings
120121
})
121122
.catch((error) => {
122123
fetchFailedCallback(this, error);
123-
scheduleTimer();
124+
scheduleTimer(reloadTimer, reloadIntervalMS, fetchNews);
124125
});
125126
};
126127

127-
/**
128-
* Schedule the timer for the next update.
129-
*/
130-
const scheduleTimer = function () {
131-
if (process.env.JEST_WORKER_ID === undefined) {
132-
// only set timer when not running in jest
133-
clearTimeout(reloadTimer);
134-
reloadTimer = setTimeout(function () {
135-
fetchNews();
136-
}, reloadIntervalMS);
137-
}
138-
};
139-
140128
/* public methods */
141129

142130
/**

modules/default/server_utils.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* Schedule the timer for the next update
3+
* @param {object} timer The timer of the module
4+
* @param {bigint} intervalMS interval in milliseconds
5+
* @param {Function} callback function to call when the timer expires
6+
*/
7+
const scheduleTimer = function (timer, intervalMS, callback) {
8+
if (process.env.JEST_WORKER_ID === undefined) {
9+
// only set timer when not running in jest
10+
let tmr = timer;
11+
clearTimeout(tmr);
12+
tmr = setTimeout(function () {
13+
callback();
14+
}, intervalMS);
15+
}
16+
};
17+
18+
module.exports = { scheduleTimer };

0 commit comments

Comments
 (0)