diff --git a/modules/default/calendar/calendarfetcher.js b/modules/default/calendar/calendarfetcher.js index 7cb4434c..cc34ea06 100644 --- a/modules/default/calendar/calendarfetcher.js +++ b/modules/default/calendar/calendarfetcher.js @@ -77,6 +77,7 @@ const CalendarFetcher = function (url, reloadInterval, excludedEvents, maximumEn } const data = ical.parseICS(requestData); + Log.debug(" parsed data=" + JSON.stringify(data)); const newEvents = []; // limitFunction doesn't do much limiting, see comment re: the dates array in rrule section below as to why we need to do the filtering ourselves @@ -87,13 +88,13 @@ const CalendarFetcher = function (url, reloadInterval, excludedEvents, maximumEn const eventDate = function (event, time) { return isFullDayEvent(event) ? moment(event[time], "YYYYMMDD") : moment(new Date(event[time])); }; - + Log.debug("there are " + Object.entries(data).length + " calendar entries"); Object.entries(data).forEach(([key, event]) => { const now = new Date(); const today = moment().startOf("day").toDate(); const future = moment().startOf("day").add(maximumNumberOfDays, "days").subtract(1, "seconds").toDate(); // Subtract 1 second so that events that start on the middle of the night will not repeat. let past = today; - + Log.debug("have entries "); if (includePastEvents) { past = moment().startOf("day").subtract(maximumNumberOfDays, "days").toDate(); } @@ -110,7 +111,7 @@ const CalendarFetcher = function (url, reloadInterval, excludedEvents, maximumEn if (event.type === "VEVENT") { let startDate = eventDate(event, "start"); let endDate; - // Log.debug("\nevent="+JSON.stringify(event)) + Log.debug("\nevent=" + JSON.stringify(event)); if (typeof event.end !== "undefined") { endDate = eventDate(event, "end"); } else if (typeof event.duration !== "undefined") { @@ -212,8 +213,15 @@ const CalendarFetcher = function (url, reloadInterval, excludedEvents, maximumEn pastLocal = pastMoment.toDate(); futureLocal = futureMoment.toDate(); } else { - pastLocal = pastMoment.subtract(past.getTimezoneOffset(), "minutes").toDate(); - futureLocal = futureMoment.subtract(future.getTimezoneOffset(), "minutes").toDate(); + // if we want past events + if (includePastEvents) { + // use the calculated past time for the between from + pastLocal = pastMoment.toDate(); + } else { + // otherwise use NOW.. cause we shouldnt use any before now + pastLocal = moment().toDate(); //now + } + futureLocal = futureMoment.toDate(); // future } Log.debug(" between=" + pastLocal + " to " + futureLocal); const dates = rule.between(pastLocal, futureLocal, true, limitFunction); @@ -299,6 +307,7 @@ const CalendarFetcher = function (url, reloadInterval, excludedEvents, maximumEn } if (showRecurrence === true) { + Log.debug("saving event =" + description); addedEvents++; newEvents.push({ title: recurrenceTitle, @@ -352,7 +361,6 @@ const CalendarFetcher = function (url, reloadInterval, excludedEvents, maximumEn } // if the start and end are the same, then make end the 'end of day' value (start is at 00:00:00) if (fullDayEvent && startDate.format("x") === endDate.format("x")) { - //Log.debug("end same as start") endDate = endDate.endOf("day"); } // get correction for date saving and dst change between now and then