* refactor: handleNewBooking #3 * refactor: create booking factor * refactor: handleNewBooking * refactor: seats and rescheduleUId * chore: remove comment * fix: type err * chore: add missing statement * chore: use less params and other improvements * chore: name * chore: improvement * fix: type err * Typo fix * chore: fix type err * refactor: more readable * refactor: improve code * fix: conflicts --------- Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com> Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import { userMetadata as userMetadataSchema } from "@calcom/prisma/zod-utils";
|
|
|
|
import type { loadAndValidateUsers } from "./loadAndValidateUsers";
|
|
|
|
type Users = Awaited<ReturnType<typeof loadAndValidateUsers>>;
|
|
|
|
const sortUsersByDynamicList = (users: Users, dynamicUserList: string[]) => {
|
|
return users.sort((a, b) => {
|
|
const aIndex = (a.username && dynamicUserList.indexOf(a.username)) || 0;
|
|
const bIndex = (b.username && dynamicUserList.indexOf(b.username)) || 0;
|
|
return aIndex - bIndex;
|
|
});
|
|
};
|
|
|
|
export const getLocationValuesForDb = (
|
|
dynamicUserList: string[],
|
|
users: Users,
|
|
locationBodyString: string
|
|
) => {
|
|
// TODO: It's definition should be moved to getLocationValueForDb
|
|
let organizerOrFirstDynamicGroupMemberDefaultLocationUrl;
|
|
if (dynamicUserList.length > 1) {
|
|
users = sortUsersByDynamicList(users, dynamicUserList);
|
|
const firstUsersMetadata = userMetadataSchema.parse(users[0].metadata);
|
|
locationBodyString = firstUsersMetadata?.defaultConferencingApp?.appLink || locationBodyString;
|
|
organizerOrFirstDynamicGroupMemberDefaultLocationUrl =
|
|
firstUsersMetadata?.defaultConferencingApp?.appLink;
|
|
}
|
|
return { locationBodyString, organizerOrFirstDynamicGroupMemberDefaultLocationUrl };
|
|
};
|