460 import event without organiser (#579)

Co-authored-by: Camille Moussu <cmoussu@linagora.com>
This commit is contained in:
Camille Moussu
2026-02-25 17:15:25 +01:00
committed by GitHub
parent 6874b9ee70
commit 82ec10cfad
4 changed files with 282 additions and 54 deletions
@@ -10,7 +10,7 @@ import {
} from "@/features/Calendars/services";
import { getEvent } from "@/features/Events/EventApi";
import { CalendarEvent } from "@/features/Events/EventsTypes";
import { userAttendee } from "@/features/User/models/attendee";
import { updateAttendeesAfterTimeChange } from "@/features/Events/updateEventHelpers/updateAttendeesAfterTimeChange";
import { createAttendee } from "@/features/User/models/attendee.mapper";
import { getDeltaInMilliseconds } from "@/utils/dateUtils";
import {
@@ -258,55 +258,3 @@ export const createEventHandlers = (props: EventHandlersProps) => {
handleEventResize,
};
};
export const updateAttendeesAfterTimeChange = (
event: CalendarEvent,
timeChanged?: boolean,
attendees?: userAttendee[]
): CalendarEvent => {
const { attendee, organizer } = event;
if (!attendee || !organizer) return event;
const organizerAddr = organizer.cal_address;
const markNeedsAction = (att: userAttendee): userAttendee => ({
...att,
partstat: "NEEDS-ACTION",
rsvp: "TRUE",
});
const getExistingOrDefault = (addr: string, fallback: userAttendee) =>
attendee.find((a) => a?.cal_address === addr) ?? fallback;
if (attendees) {
const updatedAttendees = attendees.map((att) => {
const existing = getExistingOrDefault(
att.cal_address,
markNeedsAction(att)
);
return timeChanged ? markNeedsAction(existing) : existing;
});
const organizerEntry = getExistingOrDefault(organizerAddr, {
...organizer,
role: "CHAIR",
cutype: "INDIVIDUAL",
partstat: "NEEDS-ACTION",
rsvp: "TRUE",
});
return {
...event,
attendee: [...updatedAttendees, organizerEntry],
};
}
const updatedAttendees = attendee.map((att) => {
if (att.cal_address === organizerAddr) return att;
return timeChanged ? markNeedsAction(att) : att;
});
return {
...event,
attendee: updatedAttendees,
};
};