2
0
Files
cal/calcom/packages/app-store/routing-forms/enrichFormWithMigrationData.ts
2024-08-09 00:39:27 +02:00

58 lines
1.6 KiB
TypeScript

import { getOrgFullOrigin } from "@calcom/features/ee/organizations/lib/orgDomains";
import { CAL_URL } from "@calcom/lib/constants";
import { teamMetadataSchema, userMetadata } from "@calcom/prisma/zod-utils";
export const enrichFormWithMigrationData = <
T extends {
user: {
movedToProfileId: number | null;
metadata?: unknown;
username: string | null;
nonProfileUsername: string | null;
profile: {
organization: {
slug: string | null;
} | null;
};
};
team: {
parent: {
slug: string | null;
} | null;
metadata?: unknown;
} | null;
}
>(
form: T
) => {
const parsedUserMetadata = userMetadata.parse(form.user.metadata ?? null);
const parsedTeamMetadata = teamMetadataSchema.parse(form.team?.metadata ?? null);
const formOwnerOrgSlug = form.user.profile.organization?.slug ?? null;
const nonOrgUsername = parsedUserMetadata?.migratedToOrgFrom?.username ?? form.user.nonProfileUsername;
const nonOrgTeamslug = parsedTeamMetadata?.migratedToOrgFrom?.teamSlug ?? null;
return {
...form,
user: {
...form.user,
metadata: parsedUserMetadata,
},
team: {
...form.team,
metadata: teamMetadataSchema.parse(form.team?.metadata ?? null),
},
userOrigin: formOwnerOrgSlug
? getOrgFullOrigin(formOwnerOrgSlug, {
protocol: true,
})
: CAL_URL,
teamOrigin: form.team?.parent?.slug
? getOrgFullOrigin(form.team.parent.slug, {
protocol: true,
})
: CAL_URL,
nonOrgUsername,
nonOrgTeamslug,
};
};