Files
calendar/packages/lib/server/withSelectedCalendars.ts
e2119879ae refactor: apply biome formatting to packages/sms, prisma, emails, lib (#27880)
* refactor: apply biome formatting to small packages + packages/lib

Format packages/sms, packages/prisma, packages/platform/libraries,
packages/platform/examples, packages/platform/types, packages/emails,
and packages/lib.

Excludes packages/platform/examples/base/src/pages/[bookingUid].tsx
due to pre-existing lint errors.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* revert: remove packages/platform formatting changes

Revert biome formatting for packages/platform as requested.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
2026-02-13 07:39:01 -03:00

26 lines
918 B
TypeScript

export type UserWithLegacySelectedCalendars<TCalendar, TUser> = TUser & {
selectedCalendars: TCalendar[];
};
type UserWithSelectedCalendars<TCalendar, TUser> = Omit<TUser, "selectedCalendars"> & {
allSelectedCalendars: TCalendar[];
userLevelSelectedCalendars: TCalendar[];
};
export function withSelectedCalendars<
TCalendar extends {
eventTypeId: number | null;
},
TUser extends {
selectedCalendars: TCalendar[];
},
>(user: UserWithLegacySelectedCalendars<TCalendar, TUser>): UserWithSelectedCalendars<TCalendar, TUser> {
// We are renaming selectedCalendars to allSelectedCalendars to make it clear that it contains all the calendars including eventType calendars
const { selectedCalendars, ...restUser } = user;
return {
...restUser,
allSelectedCalendars: selectedCalendars,
userLevelSelectedCalendars: selectedCalendars.filter((calendar) => !calendar.eventTypeId),
};
}