Skip to content

Commit cfac2f6

Browse files
authored
Merge pull request #297 from rossvc/master
Implement Recursive Pagination for getEvents
2 parents 946fe0e + b42cf6e commit cfac2f6

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/utils/api/calls.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ exports.sendEmail = async function sendEmail(toEmail, email, subject, content) {
3636
);
3737
};
3838

39-
exports.getEvents = async function getEvents() {
40-
const { data } = await axios.get(
41-
`https://www.googleapis.com/calendar/v3/calendars/${CALENDAR_ID}/events?key=${CALENDAR_API_KEY}`
42-
);
43-
44-
let events = [];
39+
exports.getEvents = async function getEvents(pageToken = null, allEvents = []) {
40+
let url = `https://www.googleapis.com/calendar/v3/calendars/${CALENDAR_ID}/events?maxResults=50&key=${CALENDAR_API_KEY}`;
41+
if (pageToken) {
42+
url += `&pageToken=${pageToken}`;
43+
}
44+
const { data } = await axios.get(url);
45+
const events = [];
4546
data.items
4647
.filter((obj) => obj?.start?.date || obj?.start?.dateTime)
4748
.forEach((obj) => {
@@ -54,9 +55,11 @@ exports.getEvents = async function getEvents() {
5455
desc: obj?.description ? obj.description : 'TBD',
5556
});
5657
});
57-
58-
events = _.sortBy(events, (o) => moment(o.start));
59-
return { events };
58+
allEvents.push(...events);
59+
if (data.nextPageToken) {
60+
return getEvents(data.nextPageToken, allEvents);
61+
}
62+
return { events: _.sortBy(allEvents, (o) => moment(o.start)) };
6063
};
6164

6265
exports.checkRecaptcha = async function checkRecaptcha(recaptchaToken) {

0 commit comments

Comments
 (0)