diff --git a/apps/web/modules/onboarding/hooks/useSubmitOnboarding.ts b/apps/web/modules/onboarding/hooks/useSubmitOnboarding.ts index f88b02c74d..5d24c1cda2 100644 --- a/apps/web/modules/onboarding/hooks/useSubmitOnboarding.ts +++ b/apps/web/modules/onboarding/hooks/useSubmitOnboarding.ts @@ -1,10 +1,10 @@ import { useRouter } from "next/navigation"; import { useState } from "react"; +import { useFlagMap } from "@calcom/features/flags/context/provider"; import { CreationSource } from "@calcom/prisma/enums"; import { trpc } from "@calcom/trpc/react"; import { showToast } from "@calcom/ui/components/toast"; -import { useFlagMap } from "@calcom/features/flags/context/provider"; import type { OnboardingState } from "../store/onboarding-store"; @@ -81,9 +81,7 @@ export const useSubmitOnboarding = () => { // Organization has already been created by the backend showToast("Organization created successfully!", "success"); // TODO: after this redirect we need to hard refresh the page to see org - resetOnboarding(); - const gettingStartedPath = flags["onboarding-v3"] ? "/onboarding/getting-started" : "/getting-started"; - router.push(gettingStartedPath); + skipToPersonal(resetOnboarding); } catch (err) { const errorMessage = err instanceof Error ? err.message : "Failed to create organization"; setError(errorMessage); @@ -94,8 +92,15 @@ export const useSubmitOnboarding = () => { } }; + const skipToPersonal = (resetOnboarding: () => void) => { + resetOnboarding(); + const gettingStartedPath = flags["onboarding-v3"] ? "/onboarding/personal/settings" : "/getting-started"; + router.push(gettingStartedPath); + }; + return { submitOnboarding, + skipToPersonal, isSubmitting, error, }; diff --git a/apps/web/modules/onboarding/organization/invite/organization-invite-view.tsx b/apps/web/modules/onboarding/organization/invite/organization-invite-view.tsx index fcae801e67..a2b2b5381c 100644 --- a/apps/web/modules/onboarding/organization/invite/organization-invite-view.tsx +++ b/apps/web/modules/onboarding/organization/invite/organization-invite-view.tsx @@ -188,7 +188,7 @@ export const OrganizationInviteView = ({ userEmail }: OrganizationInviteViewProp
{/* Email and Team inputs */} -
+
@@ -235,7 +235,7 @@ export const OrganizationInviteView = ({ userEmail }: OrganizationInviteViewProp color="secondary" size="sm" StartIcon="plus" - className="w-fit" + className="mt-2 w-fit" onClick={() => append({ email: "", team: "", role: "MEMBER" })}> {t("add")} diff --git a/packages/features/ee/teams/services/teamService.ts b/packages/features/ee/teams/services/teamService.ts index fd8ad502aa..10beaae686 100644 --- a/packages/features/ee/teams/services/teamService.ts +++ b/packages/features/ee/teams/services/teamService.ts @@ -103,7 +103,7 @@ export class TeamService { if (!isOrgContext) { return teamInviteLink; } - const gettingStartedPath = await OnboardingPathService.getGettingStartedPath(prisma); + const gettingStartedPath = await OnboardingPathService.getGettingStartedPathWhenInvited(prisma); const orgInviteLink = `${WEBAPP_URL}/signup?token=${token}&callbackUrl=${gettingStartedPath}`; return orgInviteLink; } diff --git a/packages/features/onboarding/lib/onboarding-path.service.ts b/packages/features/onboarding/lib/onboarding-path.service.ts index 90b48199c7..fb77777547 100644 --- a/packages/features/onboarding/lib/onboarding-path.service.ts +++ b/packages/features/onboarding/lib/onboarding-path.service.ts @@ -8,6 +8,12 @@ export class OnboardingPathService { return onboardingV3Enabled ? "/onboarding/getting-started" : "/getting-started"; } + static async getGettingStartedPathWhenInvited(prisma: PrismaClient): Promise { + const featuresRepository = new FeaturesRepository(prisma); + const onboardingV3Enabled = await featuresRepository.checkIfFeatureIsEnabledGlobally("onboarding-v3"); + return onboardingV3Enabled ? "/onboarding/personal/settings" : "/getting-started"; + } + static async getGettingStartedPathWithParams( prisma: PrismaClient, queryParams?: Record diff --git a/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts b/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts index 9798d86977..35674a96a7 100644 --- a/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts +++ b/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts @@ -504,7 +504,7 @@ export async function sendSignupToOrganizationEmail({ }) { try { const verificationToken = await createVerificationToken(usernameOrEmail, teamId); - const gettingStartedPath = await OnboardingPathService.getGettingStartedPath(prisma); + const gettingStartedPath = await OnboardingPathService.getGettingStartedPathWhenInvited(prisma); await sendTeamInviteEmail({ language: translation, from: inviterName || `${team.name}'s admin`, @@ -719,7 +719,7 @@ export const sendExistingUserTeamInviteEmails = async ({ if (!user.completedOnboarding && !user.password?.hash && user.identityProvider === "CAL") { const verificationToken = await createVerificationToken(user.email, teamId); - const gettingStartedPath = await OnboardingPathService.getGettingStartedPath(prisma); + const gettingStartedPath = await OnboardingPathService.getGettingStartedPathWhenInvited(prisma); inviteTeamOptions.joinLink = `${WEBAPP_URL}/signup?token=${verificationToken.token}&callbackUrl=${gettingStartedPath}`; inviteTeamOptions.isCalcomMember = false; } else if (!isAutoJoin) { diff --git a/packages/trpc/server/routers/viewer/teams/resendInvitation.handler.ts b/packages/trpc/server/routers/viewer/teams/resendInvitation.handler.ts index a92f26fe4d..7a18ae596e 100644 --- a/packages/trpc/server/routers/viewer/teams/resendInvitation.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/resendInvitation.handler.ts @@ -52,7 +52,7 @@ export const resendInvitationHandler = async ({ ctx, input }: InviteMemberOption if (user?.completedOnboarding) { inviteTeamOptions.joinLink = `${WEBAPP_URL}/teams?token=${verificationToken.token}&autoAccept=true`; } else { - const gettingStartedPath = await OnboardingPathService.getGettingStartedPath(prisma); + const gettingStartedPath = await OnboardingPathService.getGettingStartedPathWhenInvited(prisma); inviteTeamOptions.joinLink = `${WEBAPP_URL}/signup?token=${verificationToken.token}&callbackUrl=${gettingStartedPath}`; inviteTeamOptions.isCalcomMember = false; }