style(13-03): apply Prettier formatting across repo
Mechanical reformat — no logic changes. 398 files changed, 19125 insertions(+), 16457 deletions(-). Prettier 3.8.4 with .prettierrc (singleQuote:true, semi:true, tabWidth:2, trailingComma:all, printWidth:100). Isolated per D-13-08 for reviewability.
This commit is contained in:
@@ -24,41 +24,41 @@
|
||||
*/
|
||||
|
||||
export interface CalendarOccurrence {
|
||||
id: string // `${uid}::${dtstart_iso}` — stable identity for Schedule-X
|
||||
uid: string
|
||||
calendarId: number // DB calendar-row id — NOT used for calendarId routing
|
||||
calendarName: string
|
||||
ownerUserId: number // DB user id — this IS the routing key for personal events
|
||||
color: string // hex from users.color or shared-family constant
|
||||
isShared: boolean // true when this event belongs to the shared-family calendar
|
||||
title: string
|
||||
start: string // 'YYYY-MM-DD' for all-day; ISO 8601 with IANA tz for timed
|
||||
end: string
|
||||
allDay: boolean
|
||||
location: string | null
|
||||
description: string | null
|
||||
id: string; // `${uid}::${dtstart_iso}` — stable identity for Schedule-X
|
||||
uid: string;
|
||||
calendarId: number; // DB calendar-row id — NOT used for calendarId routing
|
||||
calendarName: string;
|
||||
ownerUserId: number; // DB user id — this IS the routing key for personal events
|
||||
color: string; // hex from users.color or shared-family constant
|
||||
isShared: boolean; // true when this event belongs to the shared-family calendar
|
||||
title: string;
|
||||
start: string; // 'YYYY-MM-DD' for all-day; ISO 8601 with IANA tz for timed
|
||||
end: string;
|
||||
allDay: boolean;
|
||||
location: string | null;
|
||||
description: string | null;
|
||||
}
|
||||
|
||||
export interface ScheduleXEvent {
|
||||
id: string
|
||||
title: string
|
||||
start: Temporal.ZonedDateTime | Temporal.PlainDate
|
||||
end: Temporal.ZonedDateTime | Temporal.PlainDate
|
||||
id: string;
|
||||
title: string;
|
||||
start: Temporal.ZonedDateTime | Temporal.PlainDate;
|
||||
end: Temporal.ZonedDateTime | Temporal.PlainDate;
|
||||
/**
|
||||
* Schedule-X calendarId — keys into the calendars config built by
|
||||
* buildCalendarConfig(). Routing:
|
||||
* 'shared' when isShared === true
|
||||
* String(ownerUserId) when isShared === false
|
||||
*/
|
||||
calendarId: string
|
||||
location?: string
|
||||
description?: string
|
||||
calendarId: string;
|
||||
location?: string;
|
||||
description?: string;
|
||||
/** FamilySync custom fields — carried through for popover rendering */
|
||||
_familySync: {
|
||||
uid: string
|
||||
color: string
|
||||
isShared: boolean
|
||||
}
|
||||
uid: string;
|
||||
color: string;
|
||||
isShared: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -71,7 +71,7 @@ export interface ScheduleXEvent {
|
||||
export function hydrateEvents(occurrences: CalendarOccurrence[]): ScheduleXEvent[] {
|
||||
return occurrences.map((occ) => {
|
||||
// calendarId routing contract — must match buildCalendarConfig() keys
|
||||
const calendarId: string = occ.isShared ? 'shared' : String(occ.ownerUserId)
|
||||
const calendarId: string = occ.isShared ? 'shared' : String(occ.ownerUserId);
|
||||
|
||||
if (occ.allDay) {
|
||||
// All-day: use Temporal.PlainDate — do NOT construct ZonedDateTime from
|
||||
@@ -84,11 +84,10 @@ export function hydrateEvents(occurrences: CalendarOccurrence[]): ScheduleXEvent
|
||||
// straight through renders every all-day event one day too long (a 1-day event
|
||||
// showed across two days). Subtract one day to get the inclusive last day,
|
||||
// clamped to never precede start.
|
||||
const startPd = Temporal.PlainDate.from(occ.start)
|
||||
const endExclusive = Temporal.PlainDate.from(occ.end)
|
||||
const endInclusive = endExclusive.subtract({ days: 1 })
|
||||
const end =
|
||||
Temporal.PlainDate.compare(endInclusive, startPd) < 0 ? startPd : endInclusive
|
||||
const startPd = Temporal.PlainDate.from(occ.start);
|
||||
const endExclusive = Temporal.PlainDate.from(occ.end);
|
||||
const endInclusive = endExclusive.subtract({ days: 1 });
|
||||
const end = Temporal.PlainDate.compare(endInclusive, startPd) < 0 ? startPd : endInclusive;
|
||||
return {
|
||||
id: occ.id,
|
||||
title: occ.title,
|
||||
@@ -100,7 +99,7 @@ export function hydrateEvents(occurrences: CalendarOccurrence[]): ScheduleXEvent
|
||||
color: occ.color,
|
||||
isShared: occ.isShared,
|
||||
},
|
||||
} satisfies ScheduleXEvent
|
||||
} satisfies ScheduleXEvent;
|
||||
}
|
||||
|
||||
// Timed: use ZonedDateTime from the offset+IANA-annotated ISO string the server returns.
|
||||
@@ -118,6 +117,6 @@ export function hydrateEvents(occurrences: CalendarOccurrence[]): ScheduleXEvent
|
||||
color: occ.color,
|
||||
isShared: occ.isShared,
|
||||
},
|
||||
} satisfies ScheduleXEvent
|
||||
})
|
||||
} satisfies ScheduleXEvent;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user