-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathical.ts
61 lines (59 loc) · 1.67 KB
/
ical.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import * as tz from "npm/ical-timezones/index.ts";
import ical, {
ICalAlarm,
ICalAlarmType,
ICalEvent,
ICalEventTransparency,
} from "ical-generator";
import { ListItem, map } from "./api.ts";
import { subDays } from "date-fns/index.js";
const x = { "X-APPLE-TRAVEL-ADVISORY-BEHAVIOR": "AUTOMATIC" };
export function getIcal(items: ListItem[]) {
const timezone = "Europe/Amsterdam";
const cal = ical({
name: "Afval Kalender",
description: "Klaterbos",
ttl: 3600 * 24,
prodId: {
company: "Sander Spilleman",
product: "Afval Kalender Klaterbos",
language: "NL",
},
timezone: {
name: timezone,
generator: tz.getVtimezoneComponent,
},
});
for (const item of items) {
for (const date of item.pickupDates) {
// console.log(date, item._pickupTypeText);
const description = { plain: item.description };
const current = new Date();
const start = subDays(new Date(date), 1);
start.setHours(18);
const end = subDays(new Date(date), 1);
end.setHours(19);
const data = {
allDay: false,
start: start,
end: end,
summary: map[item._pickupTypeText],
description,
created: current,
lastModified: current,
transparency: ICalEventTransparency.OPAQUE,
x,
floating: false,
timezone,
};
const e: ICalEvent = cal.createEvent(data);
const display: ICalAlarm = e.createAlarm();
display.trigger(3600);
display.type(ICalAlarmType.display);
const audio: ICalAlarm = e.createAlarm();
audio.trigger(3600);
audio.type(ICalAlarmType.audio);
}
}
return cal.toString();
}