Skip to content

Commit 6d19e9e

Browse files
committed
usePartners + improve onboarding progress
1 parent 5438298 commit 6d19e9e

10 files changed

Lines changed: 23 additions & 40 deletions

File tree

apps/web/app/app.dub.co/(dashboard)/[slug]/programs/[programId]/partners/partner-table.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ export function PartnerTable() {
7474

7575
const { partnersCount, error: countError } = usePartnersCount<number>();
7676

77-
// TODO: Combine with usePartners
7877
const {
7978
data: partners,
8079
error,

apps/web/app/app.dub.co/(dashboard)/[slug]/programs/[programId]/partners/use-column-visibility.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ export const partnersColumns = {
2323
"sales",
2424
"saleAmount",
2525
"commissions",
26-
"netRevenue",
2726
],
2827
};
2928

apps/web/app/app.dub.co/(dashboard)/[slug]/programs/[programId]/payouts/use-payout-filters.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,11 @@ function usePartnerFilterOptions(search: string) {
151151
partnersCount && partnersCount > PARTNERS_MAX_PAGE_SIZE,
152152
);
153153

154-
const { data: partners, loading: partnersLoading } = usePartners({
154+
const { partners, loading: partnersLoading } = usePartners({
155155
query: { search: partnersAsync ? search : "" },
156156
});
157157

158-
const { data: selectedPartners } = usePartners({
158+
const { partners: selectedPartners } = usePartners({
159159
query: {
160160
ids: searchParamsObj.partnerId ? [searchParamsObj.partnerId] : undefined,
161161
},
@@ -176,7 +176,7 @@ function usePartnerFilterOptions(search: string) {
176176
...(selectedPartners
177177
?.filter((st) => !partners?.some((t) => t.id === st.id))
178178
?.map((st) => ({ ...st, hideDuringSearch: true })) ?? []),
179-
] as (EnrolledPartnerProps & { hideDuringSearch?: boolean })[]) ?? null;
179+
] as (EnrolledPartnerProps & { hideDuringSearch?: boolean })[]);
180180
}, [partnersLoading, partners, selectedPartners, searchParamsObj.partnerId]);
181181

182182
return { partners: result, partnersAsync };

apps/web/app/app.dub.co/(dashboard)/[slug]/programs/[programId]/sales/use-sale-filters.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,11 @@ function usePartnerFilterOptions(search: string) {
167167
partnersCount && partnersCount > PARTNERS_MAX_PAGE_SIZE,
168168
);
169169

170-
const { data: partners, loading: partnersLoading } = usePartners({
170+
const { partners, loading: partnersLoading } = usePartners({
171171
query: { search: partnersAsync ? search : "" },
172172
});
173173

174-
const { data: selectedPartners } = usePartners({
174+
const { partners: selectedPartners } = usePartners({
175175
query: {
176176
ids: searchParamsObj.partnerId ? [searchParamsObj.partnerId] : undefined,
177177
},

apps/web/app/app.dub.co/(dashboard)/[slug]/programs/[programId]/top-partners.tsx

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,13 @@
1-
import useWorkspace from "@/lib/swr/use-workspace";
2-
import { EnrolledPartnerProps } from "@/lib/types";
1+
import usePartners from "@/lib/swr/use-partners";
32
import { buttonVariants } from "@dub/ui";
4-
import {
5-
cn,
6-
currencyFormatter,
7-
DICEBEAR_AVATAR_URL,
8-
fetcher,
9-
} from "@dub/utils";
3+
import { cn, currencyFormatter, DICEBEAR_AVATAR_URL } from "@dub/utils";
104
import Link from "next/link";
115
import { useParams } from "next/navigation";
12-
import useSWR from "swr";
136

147
export function TopPartners() {
158
const { slug, programId } = useParams();
16-
const { id: workspaceId } = useWorkspace();
179

18-
const { data: partners, error } = useSWR<EnrolledPartnerProps[]>(
19-
`/api/partners?workspaceId=${workspaceId}&programId=${programId}`,
20-
fetcher,
21-
);
22-
23-
const isLoading = !partners && !error;
10+
const { partners, loading } = usePartners();
2411

2512
return (
2613
<div className="rounded-md border border-neutral-200">
@@ -41,7 +28,7 @@ export function TopPartners() {
4128
</div>
4229
<div className="p-3">
4330
<div className="h-px min-h-64">
44-
{isLoading ? (
31+
{loading ? (
4532
<div className="grid grid-cols-1 gap-1">
4633
{[...Array(5)].map((_, i) => (
4734
<div

apps/web/lib/swr/use-partners.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default function usePartners(
3434
);
3535

3636
return {
37-
data,
37+
partners: data,
3838
loading: isLoading,
3939
error,
4040
};

apps/web/ui/layout/toolbar/onboarding/onboarding-button.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,25 +47,30 @@ function OnboardingButtonInner({
4747
display: "Create a new Dub link",
4848
cta: `/${slug}`,
4949
checked: totalLinks === 0 ? false : true,
50+
recommended: true,
5051
},
5152
{
5253
display: "Set up your custom domain",
5354
cta: `/${slug}/settings/domains`,
5455
checked: domainsCount && domainsCount > 0,
56+
recommended: true,
5557
},
5658
{
5759
display: "Invite your teammates",
5860
cta: `/${slug}/settings/people`,
5961
checked: (users && users.length > 1) || (invites && invites.length > 0),
62+
recommended: false,
6063
},
6164
];
6265
}, [slug, domainsCount, totalLinks, users, invites]);
6366

6467
const [isOpen, setIsOpen] = useState(false);
6568

66-
const completedTasks = tasks.filter((task) => task.checked).length;
69+
const remainingRecommendedTasks = tasks.filter(
70+
(task) => task.recommended && !task.checked,
71+
).length;
6772

68-
return loading || completedTasks === tasks.length ? null : (
73+
return loading || remainingRecommendedTasks === 0 ? null : (
6974
<Popover
7075
align="end"
7176
popoverContentClassName="rounded-xl"
@@ -132,7 +137,8 @@ function OnboardingButtonInner({
132137
>
133138
<span>Getting Started</span>
134139
<span className="text-neutral-400">
135-
{Math.round((completedTasks / tasks.length) * 100)}% complete
140+
{Math.round((remainingRecommendedTasks / tasks.length) * 100)}%
141+
complete
136142
</span>
137143
</button>
138144
</Popover>

apps/web/ui/partners/create-payout-sheet.tsx

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,7 @@ import { Button, Combobox, Sheet, useEnterSubmit } from "@dub/ui";
1111
import { cn } from "@dub/utils";
1212
import { useAction } from "next-safe-action/hooks";
1313
import { useParams, useRouter } from "next/navigation";
14-
import {
15-
Dispatch,
16-
SetStateAction,
17-
useId,
18-
useMemo,
19-
useRef,
20-
useState,
21-
} from "react";
14+
import { Dispatch, SetStateAction, useMemo, useRef, useState } from "react";
2215
import { useForm } from "react-hook-form";
2316
import { toast } from "sonner";
2417
import { z } from "zod";
@@ -40,9 +33,8 @@ function CreatePayoutSheetContent(props: CreatePayoutSheetProps) {
4033
const { setIsOpen } = props;
4134

4235
const router = useRouter();
43-
const dateRangePickerId = useId();
4436
const { program } = useProgram();
45-
const { data: partners } = usePartners();
37+
const { partners } = usePartners();
4638
const { id: workspaceId } = useWorkspace();
4739
const { slug, programId } = useParams();
4840

apps/web/ui/partners/discount-partners-table.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export function DiscountPartnersTable({
2828
>([]);
2929

3030
// Get filtered partners for the combobox
31-
const { data: searchPartners } = usePartners({
31+
const { partners: searchPartners } = usePartners({
3232
query: {
3333
search: debouncedSearch,
3434
},

apps/web/ui/partners/reward-partners-table.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export function RewardPartnersTable({
2828
>([]);
2929

3030
// Get filtered partners for the combobox
31-
const { data: searchPartners } = usePartners({
31+
const { partners: searchPartners } = usePartners({
3232
query: {
3333
search: debouncedSearch,
3434
},

0 commit comments

Comments
 (0)