From 22d674c6b50af0ff518e166819cfe20f6a877702 Mon Sep 17 00:00:00 2001 From: Camille Moussu <66134347+Eriikah@users.noreply.github.com> Date: Fri, 12 Dec 2025 17:33:33 +0100 Subject: [PATCH] [#4180] added support for instant event (#417) Co-authored-by: Camille Moussu --- __test__/features/Events/eventUtils.test.ts | 12 ++++++++---- src/features/Events/eventUtils.ts | 6 ++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/__test__/features/Events/eventUtils.test.ts b/__test__/features/Events/eventUtils.test.ts index 6b89148..2e2e84e 100644 --- a/__test__/features/Events/eventUtils.test.ts +++ b/__test__/features/Events/eventUtils.test.ts @@ -13,7 +13,7 @@ import { import { TIMEZONES } from "../../../src/utils/timezone-data"; describe("parseCalendarEvent", () => { - const baseColor = "#00FF00"; + const baseColor = { light: "#00FF00" }; const calendarId = "calendar-123"; it("parses a full event with MAILTO in caps correctly", () => { @@ -215,12 +215,12 @@ describe("parseCalendarEvent", () => { ); expect(result.end).toBeDefined(); expect(result.timezone).toBeDefined(); - const endDate = new Date(result.end); + const endDate = new Date(result.end ?? ""); const startDate = new Date(result.start); expect(endDate.getTime() - startDate.getTime()).toBe(60 * 60 * 1000); }); - it("returns error if end and duration is missing", () => { + it("returns 30 minutes event if end and duration are missing", () => { const rawDataMissing: any = [ ["UID", {}, "text", "event-1"], ["DTSTART", {}, "date-time", "2025-07-18T09:00:00Z"], @@ -232,7 +232,11 @@ describe("parseCalendarEvent", () => { calendarId, "/calendars/test.ics" ); - expect(result.error).toMatch(/missing crucial event param/); + expect(result.end).toBeDefined(); + expect(result.timezone).toBeDefined(); + const endDate = new Date(result.end ?? ""); + const startDate = new Date(result.start); + expect(endDate.getTime() - startDate.getTime()).toBe(30 * 60 * 1000); }); it("parses alarm block correctly", () => { diff --git a/src/features/Events/eventUtils.ts b/src/features/Events/eventUtils.ts index ce46ef1..48d2de2 100644 --- a/src/features/Events/eventUtils.ts +++ b/src/features/Events/eventUtils.ts @@ -188,7 +188,7 @@ export function parseCalendarEvent( } event.URL = eventURL; - if (!event.uid || !event.start || (!event.end && !duration)) { + if (!event.uid || !event.start) { console.error( `missing crucial event param in calendar ${calendarid} `, data @@ -201,7 +201,9 @@ export function parseCalendarEvent( if (!event.end) { const start = event.start ? new Date(event.start) : new Date(); - const timeToAdd = moment.duration(duration).asMilliseconds(); + const timeToAdd = duration + ? moment.duration(duration).asMilliseconds() + : moment.duration(30, "minutes").asMilliseconds(); const artificialEnd = new Date(start.getTime() + timeToAdd); event.end = formatDateToICal(artificialEnd, false, eventTimezone); }