[#1] getting the calendars from the api

This commit is contained in:
Camille Moussu
2025-07-03 14:21:04 +02:00
parent c11c65c697
commit 65621924a2
10 changed files with 199 additions and 12 deletions
+3 -2
View File
@@ -2,7 +2,7 @@ import { userAttendee, userOrganiser } from "../User/userDataTypes";
export interface CalendarEvent {
uid: string;
transp: string;
transp?: string;
start: Date; // ISO date
end?: Date;
class?: string;
@@ -10,9 +10,10 @@ export interface CalendarEvent {
title?: string;
description?: string;
location?: string;
organizer: userOrganiser;
organizer?: userOrganiser;
attendee: userAttendee[];
stamp?: Date;
sequence?: Number;
color?: string;
allday?:Boolean
}
+72
View File
@@ -0,0 +1,72 @@
import { userAttendee } from "../User/userDataTypes";
import { CalendarEvent } from "./EventsTypes";
type RawEntry = [string, Record<string, string>, string, any];
export function parseCalendarEvent(
data: RawEntry[],
color: string
): CalendarEvent {
const event: Partial<CalendarEvent> = { color, attendee: [] };
for (const [key, params, type, value] of data) {
switch (key.toLowerCase()) {
case "uid":
event.uid = value;
break;
case "transp":
event.transp = value;
break;
case "dtstart":
event.start = value;
break;
case "dtend":
event.end = value;
break;
case "class":
event.class = value;
break;
case "x-openpaas-videoconference":
event.x_openpass_videoconference = value;
break;
case "summary":
event.title = value;
break;
case "description":
event.description = value;
break;
case "location":
event.location = value;
break;
case "organizer":
event.organizer = {
cn: params?.cn || "",
cal_address: value.replace(/^mailto:/, ""),
};
break;
case "attendee":
(event.attendee as userAttendee[]).push({
cn: params?.cn || "",
cal_address: value.replace(/^mailto:/, ""),
partstat: params?.partstat || "",
rsvp: params?.rsvp || "",
role: params?.role || "",
cutype: params?.cutype || "",
});
break;
case "dtstamp":
event.stamp = new Date(value);
break;
case "sequence":
event.sequence = Number(value);
break;
}
}
if (!event.uid || !event.start) {
console.log(event);
throw new Error(`Missing required event fields`);
}
return event as CalendarEvent;
}