[#31] added repetition and all day to events to be sent

This commit is contained in:
Camille Moussu
2025-07-23 12:12:56 +02:00
parent 08789cb6f3
commit a150db82cd
4 changed files with 65 additions and 14 deletions
+15 -4
View File
@@ -94,7 +94,12 @@ export function calendarEventToJCal(event: CalendarEvent): any[] {
[
["uid", {}, "text", event.uid],
["transp", {}, "text", event.transp ?? "OPAQUE"],
["dtstart", { tzid }, "date-time", formatDateToICal(event.start)],
[
"dtstart",
{ tzid },
event.allday ? "date" : "date-time",
formatDateToICal(event.start, event.allday ?? false),
],
["class", {}, "text", event.class ?? "PUBLIC"],
[
"x-openpaas-videoconference",
@@ -111,8 +116,8 @@ export function calendarEventToJCal(event: CalendarEvent): any[] {
vevent[1].push([
"dtend",
{ tzid },
"date-time",
formatDateToICal(event.end),
event.allday ? "date" : "date-time",
formatDateToICal(event.end, event.allday ?? false),
]);
}
if (event.organizer) {
@@ -129,6 +134,9 @@ export function calendarEventToJCal(event: CalendarEvent): any[] {
if (event.description) {
vevent[1].push(["description", {}, "text", event.description]);
}
if (event.repetition) {
vevent[1].push(["rrule", {}, "recur", { freq: event.repetition }]);
}
event.attendee.forEach((att) => {
vevent[1].push([
@@ -151,7 +159,7 @@ export function calendarEventToJCal(event: CalendarEvent): any[] {
});
return ["vcalendar", [], [vevent, vtimezone.component.jCal]];
}
function formatDateToICal(date: Date) {
function formatDateToICal(date: Date, allday: Boolean) {
// Format date like: 20250214T110000 (local time)
const pad = (n: number) => n.toString().padStart(2, "0");
@@ -161,5 +169,8 @@ function formatDateToICal(date: Date) {
const hours = pad(date.getHours());
const minutes = pad(date.getMinutes());
const seconds = pad(date.getSeconds());
if (allday) {
return `${year}-${month}-${day}`;
}
return `${year}${month}${day}T${hours}${minutes}${seconds}`;
}