diff --git a/CHANGELOG.md b/CHANGELOG.md index 789c016d..50562df1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ _This release is scheduled to be released on 2022-10-01._ ## Added +- Possibility to fetch calendars through socket notifications. - New scripts `install-mm` (and `install-mm:dev`) for simplifying mm installation (now: `npm run install-mm`) and adding params `--no-audit --no-fund --no-update-notifier` for less noise. - New `showTimeToday` option in calendar module shows time for current-day events even if `timeFormat` is `"relative"` diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js index 1242dedf..134a84ce 100644 --- a/modules/default/calendar/calendar.js +++ b/modules/default/calendar/calendar.js @@ -134,6 +134,10 @@ Module.register("calendar", { // Override socket notification handler. socketNotificationReceived: function (notification, payload) { + if (notification === "FETCH_CALENDAR") { + this.sendSocketNotification(notification, { url: payload.url, id: this.identifier }); + } + if (this.identifier !== payload.id) { return; } diff --git a/modules/default/calendar/node_helper.js b/modules/default/calendar/node_helper.js index 21fa7e0e..2121c309 100644 --- a/modules/default/calendar/node_helper.js +++ b/modules/default/calendar/node_helper.js @@ -19,6 +19,14 @@ module.exports = NodeHelper.create({ socketNotificationReceived: function (notification, payload) { if (notification === "ADD_CALENDAR") { this.createFetcher(payload.url, payload.fetchInterval, payload.excludedEvents, payload.maximumEntries, payload.maximumNumberOfDays, payload.auth, payload.broadcastPastEvents, payload.selfSignedCert, payload.id); + } else if (notification === "FETCH_CALENDAR") { + const key = payload.id + payload.url; + if (typeof this.fetchers[key] === "undefined") { + Log.error("Calendar Error. No fetcher exists with key: ", key); + this.sendSocketNotification("CALENDAR_ERROR", { error_type: "MODULE_ERROR_UNSPECIFIED" }); + return; + } + this.fetchers[key].startFetch(); } },