Skip to content

Commit f40c6da

Browse files
hbjORbjemrysal
andauthored
fix: use server fetched user for all sub pages in /getting-started (#23064)
* use server fetched user for all sub pages * Wrap setAnyInstalledVideoApps call in useEffect --------- Co-authored-by: Alex van Andel <[email protected]>
1 parent fc2e81e commit f40c6da

File tree

4 files changed

+25
-22
lines changed

4 files changed

+25
-22
lines changed

apps/web/components/getting-started/steps-views/ConnectedVideoStep.tsx

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { type TFunction } from "i18next";
2-
import { useState } from "react";
2+
import { useEffect, useState } from "react";
33
import type { Dispatch, SetStateAction } from "react";
44

55
import { useLocale } from "@calcom/lib/hooks/useLocale";
66
import { userMetadata } from "@calcom/prisma/zod-utils";
77
import { trpc } from "@calcom/trpc/react";
8-
import useMeQuery from "@calcom/trpc/react/hooks/useMeQuery";
8+
import type { RouterOutputs } from "@calcom/trpc/react";
99
import classNames from "@calcom/ui/classNames";
1010
import { Button } from "@calcom/ui/components/button";
1111
import { List } from "@calcom/ui/components/list";
@@ -16,14 +16,17 @@ import { StepConnectionLoader } from "../components/StepConnectionLoader";
1616
interface ConnectedAppStepProps {
1717
nextStep: () => void;
1818
isPageLoading: boolean;
19+
user: RouterOutputs["viewer"]["me"]["get"];
1920
}
2021

2122
const ConnectedVideoStepInner = ({
2223
t,
2324
setAnyInstalledVideoApps,
25+
user,
2426
}: {
2527
t: TFunction;
2628
setAnyInstalledVideoApps: Dispatch<SetStateAction<boolean>>;
29+
user: RouterOutputs["viewer"]["me"]["get"];
2730
}) => {
2831
const { data: queryConnectedVideoApps, isPending } = trpc.viewer.apps.integrations.useQuery({
2932
variant: "conferencing",
@@ -39,25 +42,20 @@ const ConnectedVideoStepInner = ({
3942
sortByMostPopular: true,
4043
sortByInstalledFirst: true,
4144
});
42-
// we want to start loading immediately, after all this is a hook.
43-
const { data, status } = useMeQuery();
44-
45-
if (isPending) {
46-
return <StepConnectionLoader />;
47-
}
4845

4946
const hasAnyInstalledVideoApps = queryConnectedVideoApps?.items.some(
5047
(item) => item.userCredentialIds.length > 0
5148
);
52-
if (hasAnyInstalledVideoApps) {
53-
setAnyInstalledVideoApps(true);
54-
}
5549

56-
if (status !== "success") {
50+
useEffect(() => {
51+
setAnyInstalledVideoApps(Boolean(hasAnyInstalledVideoApps));
52+
}, [hasAnyInstalledVideoApps, setAnyInstalledVideoApps]);
53+
54+
if (isPending) {
5755
return <StepConnectionLoader />;
5856
}
5957

60-
const result = userMetadata.safeParse(data?.metadata);
58+
const result = userMetadata.safeParse(user.metadata);
6159
if (!result.success) {
6260
return <StepConnectionLoader />;
6361
}
@@ -91,12 +89,12 @@ const ConnectedVideoStepInner = ({
9189
};
9290

9391
const ConnectedVideoStep = (props: ConnectedAppStepProps) => {
94-
const { nextStep, isPageLoading } = props;
92+
const { nextStep, isPageLoading, user } = props;
9593
const { t } = useLocale();
9694
const [hasAnyInstalledVideoApps, setAnyInstalledVideoApps] = useState(false);
9795
return (
9896
<>
99-
<ConnectedVideoStepInner setAnyInstalledVideoApps={setAnyInstalledVideoApps} t={t} />
97+
<ConnectedVideoStepInner setAnyInstalledVideoApps={setAnyInstalledVideoApps} t={t} user={user} />
10098
<Button
10199
EndIcon="arrow-right"
102100
data-testid="save-video-button"

apps/web/components/getting-started/steps-views/UserProfile.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { md } from "@calcom/lib/markdownIt";
1010
import { telemetryEventTypes } from "@calcom/lib/telemetry";
1111
import turndown from "@calcom/lib/turndownService";
1212
import { trpc } from "@calcom/trpc/react";
13+
import type { RouterOutputs } from "@calcom/trpc/react";
1314
import { UserAvatar } from "@calcom/ui/components/avatar";
1415
import { Button } from "@calcom/ui/components/button";
1516
import { Editor } from "@calcom/ui/components/editor";
@@ -21,8 +22,11 @@ type FormData = {
2122
bio: string;
2223
};
2324

24-
const UserProfile = () => {
25-
const [user] = trpc.viewer.me.get.useSuspenseQuery();
25+
interface UserProfileProps {
26+
user: RouterOutputs["viewer"]["me"]["get"];
27+
}
28+
29+
const UserProfile = ({ user }: UserProfileProps) => {
2630
const { t } = useLocale();
2731
const avatarRef = useRef<HTMLInputElement>(null);
2832
const { setValue, handleSubmit, getValues } = useForm<FormData>({

apps/web/components/getting-started/steps-views/UserSettings.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale";
1313
import { useTelemetry } from "@calcom/lib/hooks/useTelemetry";
1414
import { telemetryEventTypes } from "@calcom/lib/telemetry";
1515
import { trpc } from "@calcom/trpc/react";
16+
import type { RouterOutputs } from "@calcom/trpc/react";
1617
import { Button } from "@calcom/ui/components/button";
1718
import { Input } from "@calcom/ui/components/form";
1819

@@ -21,11 +22,11 @@ import { UsernameAvailabilityField } from "@components/ui/UsernameAvailability";
2122
interface IUserSettingsProps {
2223
nextStep: () => void;
2324
hideUsername?: boolean;
25+
user: RouterOutputs["viewer"]["me"]["get"];
2426
}
2527

2628
const UserSettings = (props: IUserSettingsProps) => {
27-
const { nextStep } = props;
28-
const [user] = trpc.viewer.me.get.useSuspenseQuery();
29+
const { nextStep, user } = props;
2930
const { t } = useLocale();
3031
const { setTimezone: setSelectedTimeZone, timezone: selectedTimeZone } = useTimePreferences();
3132
const telemetry = useTelemetry();

apps/web/modules/getting-started/[[...step]]/onboarding-view.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,20 +162,20 @@ const OnboardingPage = (props: PageProps) => {
162162
<StepCard>
163163
<Suspense fallback={<Icon name="loader" />}>
164164
{currentStep === "user-settings" && (
165-
<UserSettings nextStep={goToNextStep} hideUsername={from === "signup"} />
165+
<UserSettings nextStep={goToNextStep} hideUsername={from === "signup"} user={user} />
166166
)}
167167
{currentStep === "connected-calendar" && (
168168
<ConnectedCalendars nextStep={goToNextStep} isPageLoading={isNextStepLoading} />
169169
)}
170170

171171
{currentStep === "connected-video" && (
172-
<ConnectedVideoStep nextStep={goToNextStep} isPageLoading={isNextStepLoading} />
172+
<ConnectedVideoStep nextStep={goToNextStep} isPageLoading={isNextStepLoading} user={user} />
173173
)}
174174

175175
{currentStep === "setup-availability" && (
176176
<SetupAvailability nextStep={goToNextStep} defaultScheduleId={user.defaultScheduleId} />
177177
)}
178-
{currentStep === "user-profile" && <UserProfile />}
178+
{currentStep === "user-profile" && <UserProfile user={user} />}
179179
</Suspense>
180180
</StepCard>
181181

0 commit comments

Comments
 (0)