Skip to content

Commit 128e798

Browse files
committed
Prefill the profile data for the Partner on onboarding form
1 parent 5b90c22 commit 128e798

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

apps/web/app/partners.dub.co/(onboarding)/onboarding/onboarding-form.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import { onboardPartnerAction } from "@/lib/actions/partners/onboard-partner";
44
import { onboardPartnerSchema } from "@/lib/zod/schemas/partners";
5+
import { Partner } from "@dub/prisma/client";
56
import {
67
Button,
78
buttonVariants,
@@ -21,7 +22,11 @@ import ReactTextareaAutosize from "react-textarea-autosize";
2122
import { toast } from "sonner";
2223
import { z } from "zod";
2324

24-
export function OnboardingForm() {
25+
export function OnboardingForm({
26+
partner,
27+
}: {
28+
partner: Pick<Partner, "bio" | "country" | "image"> | null;
29+
}) {
2530
const router = useRouter();
2631
const { data: session } = useSession();
2732
const { isMobile } = useMediaQuery();
@@ -34,7 +39,13 @@ export function OnboardingForm() {
3439
setValue,
3540
watch,
3641
formState: { errors, isSubmitting, isSubmitSuccessful },
37-
} = useForm<z.infer<typeof onboardPartnerSchema>>();
42+
} = useForm<z.infer<typeof onboardPartnerSchema>>({
43+
defaultValues: {
44+
description: partner?.bio ?? undefined,
45+
country: partner?.country ?? undefined,
46+
image: partner?.image ?? undefined,
47+
},
48+
});
3849

3950
useEffect(() => {
4051
if (session?.user) {

apps/web/app/partners.dub.co/(onboarding)/onboarding/page.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,22 @@
1+
import { getSession } from "@/lib/auth";
2+
import { prisma } from "@dub/prisma";
13
import { ConnectedDots4 } from "@dub/ui/icons";
24
import { OnboardingForm } from "./onboarding-form";
35

4-
export default function Onboarding() {
6+
export default async function Onboarding() {
7+
const { user } = await getSession();
8+
9+
const partner = await prisma.partner.findUnique({
10+
where: {
11+
email: user.email,
12+
},
13+
select: {
14+
bio: true,
15+
country: true,
16+
image: true,
17+
},
18+
});
19+
520
return (
621
<div className="mx-auto my-10 flex w-full max-w-sm flex-col items-center md:mt-14">
722
<div className="animate-slide-up-fade flex size-10 items-center justify-center rounded-full border border-neutral-200 bg-white backdrop-blur-sm [--offset:8px] [animation-delay:250ms] [animation-duration:1s] [animation-fill-mode:both]">
@@ -11,7 +26,7 @@ export default function Onboarding() {
1126
Create your Dub Partner profile
1227
</h1>
1328
<div className="animate-slide-up-fade mt-8 w-full [--offset:10px] [animation-delay:500ms] [animation-duration:1s] [animation-fill-mode:both]">
14-
<OnboardingForm />
29+
<OnboardingForm partner={partner} />
1530
</div>
1631
</div>
1732
);

0 commit comments

Comments
 (0)