diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2018-05-03 08:55:22 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2018-05-03 08:55:22 +0200 |
| commit | ece05d6ea3eabdd64c16dac009633c78fe337fc4 (patch) | |
| tree | 8ad6834618f5d8a6dcaa3b43b789a6554a1526a1 | |
| parent | 54a85ae9d1ebda505194ee29f48682cbd6d57e9f (diff) | |
| download | splus-ece05d6ea3eabdd64c16dac009633c78fe337fc4.tar.gz splus-ece05d6ea3eabdd64c16dac009633c78fe337fc4.zip | |
Fix week prefetching
| -rw-r--r-- | src/index.ts | 53 |
1 files changed, 26 insertions, 27 deletions
diff --git a/src/index.ts b/src/index.ts index ce1a70a..6de11de 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,42 +6,41 @@ import {SplusApi} from './core/SplusApi'; import {IEvent} from './core/IEvent'; import {ILecture} from './core/ILecture'; -const flatten = (array) => [].concat(...array); const range = (upper: number): number[] => Array.from(Array(upper), (x, i) => i) async function main(configCourse, configPrefetchWeeks, configFilter) { const baseDate = moment().startOf('week'); - const unfilteredLectureChunks: ILecture[][] = await BPromise.map(range(configPrefetchWeeks), - async week => await SplusApi.getData(configCourse, baseDate.weeks() + week) - ); - const lectures: ILecture[] = flatten(unfilteredLectureChunks).filter(configFilter); + await BPromise.map(range(configPrefetchWeeks), async weeksAhead => { + const unfilteredLectures = await SplusApi.getData(configCourse, baseDate.weeks() + weeksAhead); + const lectures = unfilteredLectures.filter(configFilter); - await BPromise.map(lectures, async (lec: ILecture, weeksAhead) => { - let beginDate = baseDate.clone(); - beginDate.add(moment.duration({ - days: lec.day + 1, // for moment: 1 = Monday - hours: lec.begin, - weeks: weeksAhead, - })); + await BPromise.map(lectures, async lec => { + let beginDate = baseDate.clone(); + beginDate.add(moment.duration({ + days: lec.day + 1, // for moment: 1 = Monday + hours: lec.begin, + weeks: weeksAhead, + })); - let endDate = baseDate.clone(); - endDate.add(moment.duration({ - days: lec.day + 1, - hours: lec.end, - weeks: weeksAhead, - })); - const event: IEvent = { - summary: lec.title, - description: lec.lecturer + (lec.info !== '' ? ' - ' : '') + lec.info, - location: lec.room, - start: beginDate.toDate(), - end: endDate.toDate(), - }; + let endDate = baseDate.clone(); + endDate.add(moment.duration({ + days: lec.day + 1, + hours: lec.end, + weeks: weeksAhead, + })); + const event: IEvent = { + summary: lec.title, + description: lec.lecturer + (lec.info !== '' ? ' - ' : '') + lec.info, + location: lec.room, + start: beginDate.toDate(), + end: endDate.toDate(), + }; - await config.sink.createEvent(event); + await config.sink.createEvent(event); - console.log(lec.title, beginDate.toISOString(), endDate.toISOString()); + console.log(lec.title, beginDate.toISOString(), endDate.toISOString()); + }); }); await config.sink.commit(); |
