* 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]>
26 lines
918 B
TypeScript
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),
|
|
};
|
|
}
|