Skip to content

Commit b978241

Browse files
committed
fix usePayoutsCount to use ignoreParams
1 parent 921f065 commit b978241

File tree

8 files changed

+55
-38
lines changed

8 files changed

+55
-38
lines changed

apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/overview-tasks.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { usePartnerMessagesCount } from "@/lib/swr/use-partner-messages-count";
22
import usePartnersCount from "@/lib/swr/use-partners-count";
3-
import usePayoutsCount from "@/lib/swr/use-payouts-count";
3+
import { usePayoutsCount } from "@/lib/swr/use-payouts-count";
44
import useWorkspace from "@/lib/swr/use-workspace";
55
import { ProgramOverviewCard } from "@/ui/partners/overview/program-overview-card";
66
import { MoneyBills2, Msgs, UserCheck } from "@dub/ui";
@@ -21,6 +21,7 @@ export function OverviewTasks() {
2121
} = usePayoutsCount<number | undefined>({
2222
eligibility: "eligible",
2323
status: "pending",
24+
ignoreParams: true,
2425
});
2526

2627
const { count: unreadMessagesCount, isLoading: unreadMessagesLoading } =

apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-stats.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use client";
22

33
import { clientAccessCheck } from "@/lib/client-access-check";
4-
import usePayoutsCount from "@/lib/swr/use-payouts-count";
4+
import { usePayoutsCount } from "@/lib/swr/use-payouts-count";
55
import useWorkspace from "@/lib/swr/use-workspace";
66
import { PayoutsCount } from "@/lib/types";
77
import { ConfirmPayoutsSheet } from "@/ui/partners/confirm-payouts-sheet";

apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-table.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { getPlanCapabilities } from "@/lib/plan-capabilities";
44
import { useFraudGroupCount } from "@/lib/swr/use-fraud-groups-count";
5-
import usePayoutsCount from "@/lib/swr/use-payouts-count";
5+
import { usePayoutsCount } from "@/lib/swr/use-payouts-count";
66
import useProgram from "@/lib/swr/use-program";
77
import useWorkspace from "@/lib/swr/use-workspace";
88
import { FraudGroupCountByPartner, PayoutResponse } from "@/lib/types";

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import usePartners from "@/lib/swr/use-partners";
2-
import usePayoutsCount from "@/lib/swr/use-payouts-count";
2+
import { usePayoutsCount } from "@/lib/swr/use-payouts-count";
33
import { EnrolledPartnerProps, PayoutsCount } from "@/lib/types";
44
import { PayoutStatusBadges } from "@/ui/partners/payout-status-badges";
55
import { useRouterStuff } from "@dub/ui";

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export default function usePartnersCount<T>({
1111
enabled,
1212
...params
1313
}: z.infer<typeof partnersCountQuerySchema> & {
14-
programId?: string;
1514
ignoreParams?: boolean;
1615
enabled?: boolean;
1716
} = {}) {

apps/web/lib/swr/use-payouts-count.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,14 @@ import { PayoutsCount } from "../types";
66
import { payoutsCountQuerySchema } from "../zod/schemas/payouts";
77
import useWorkspace from "./use-workspace";
88

9-
export default function usePayoutsCount<T>({
9+
export function usePayoutsCount<T>({
10+
ignoreParams,
1011
enabled = true,
1112
...query
12-
}: z.input<typeof payoutsCountQuerySchema> & { enabled?: boolean } = {}) {
13+
}: z.input<typeof payoutsCountQuerySchema> & {
14+
ignoreParams?: boolean;
15+
enabled?: boolean;
16+
} = {}) {
1317
const { id: workspaceId, defaultProgramId } = useWorkspace();
1418
const { getQueryString } = useRouterStuff();
1519

@@ -23,7 +27,7 @@ export default function usePayoutsCount<T>({
2327
workspaceId,
2428
},
2529
{
26-
include: ["status", "partnerId", "invoiceId"],
30+
include: ignoreParams ? [] : ["status", "partnerId", "invoiceId"],
2731
},
2832
)}`,
2933
fetcher,

apps/web/scripts/fix-broken-partner-users.ts

Lines changed: 41 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,52 @@
11
import { prisma } from "@dub/prisma";
2+
import { chunk } from "@dub/utils";
23
import "dotenv-flow/config";
34

45
async function main() {
5-
let batch = 0;
6-
while (true) {
7-
const partnerUserIds = await prisma.partnerUser.findMany({
8-
select: {
9-
userId: true,
6+
const users = await prisma.user.findMany({
7+
where: {
8+
defaultPartnerId: null,
9+
partners: {
10+
some: {},
1011
},
11-
take: 50000,
12-
skip: batch * 50000,
13-
});
14-
if (partnerUserIds.length === 0) {
15-
break;
16-
}
17-
const users = await prisma.user.findMany({
18-
where: {
19-
id: {
20-
in: partnerUserIds.map((partnerUser) => partnerUser.userId),
12+
},
13+
include: {
14+
partners: {
15+
select: {
16+
partner: {
17+
select: {
18+
id: true,
19+
email: true,
20+
},
21+
},
2122
},
2223
},
23-
});
24-
const usersThatDontExist = partnerUserIds.filter(
25-
(partnerUser) => !users.some((user) => user.id === partnerUser.userId),
26-
);
27-
console.log(usersThatDontExist);
24+
},
25+
});
2826

29-
const deletedPartnerUsers = await prisma.partnerUser.deleteMany({
30-
where: {
31-
userId: {
32-
in: usersThatDontExist.map((partnerUser) => partnerUser.userId),
33-
},
34-
},
35-
});
36-
console.log(`Deleted ${deletedPartnerUsers.count} partner users`);
37-
batch++;
27+
console.log(`Found ${users.length} users with no default partner id`);
28+
console.table(
29+
users.map((user) => ({
30+
id: user.id,
31+
email: user.email,
32+
name: user.name,
33+
partnerId: user.partners[0]?.partner.id,
34+
partnerEmail: user.partners[0]?.partner.email,
35+
matchingPartnerEmail:
36+
user.partners[0]?.partner.email === user.email ? "Yes" : "No",
37+
})),
38+
);
39+
40+
const chunks = chunk(users, 20);
41+
for (const chunk of chunks) {
42+
await Promise.all(
43+
chunk.map((user) =>
44+
prisma.user.update({
45+
where: { id: user.id },
46+
data: { defaultPartnerId: user.partners[0]?.partner.id },
47+
}),
48+
),
49+
);
3850
}
3951
}
4052

apps/web/ui/layout/sidebar/app-sidebar-nav.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from "@/lib/swr/use-bounty-submissions-count";
88
import { useFraudGroupCount } from "@/lib/swr/use-fraud-groups-count";
99
import { usePartnerMessagesCount } from "@/lib/swr/use-partner-messages-count";
10-
import usePayoutsCount from "@/lib/swr/use-payouts-count";
10+
import { usePayoutsCount } from "@/lib/swr/use-payouts-count";
1111
import useProgram from "@/lib/swr/use-program";
1212
import { useProgramReferralsCount } from "@/lib/swr/use-program-referrals-count";
1313
import useWorkspace from "@/lib/swr/use-workspace";
@@ -568,6 +568,7 @@ export function AppSidebarNav({
568568
>({
569569
eligibility: "eligible",
570570
status: "pending",
571+
ignoreParams: true,
571572
enabled: Boolean(currentArea === "program" && defaultProgramId),
572573
});
573574

0 commit comments

Comments
 (0)