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, }; };