Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions apps/web/app/(ee)/admin.dub.co/(dashboard)/commissions/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
currencyFormatter,
DUB_FOUNDING_DATE,
fetcher,
getDomainWithoutWWW,
OG_AVATAR_URL,
} from "@dub/utils";
import NumberFlow from "@number-flow/react";
Expand All @@ -41,6 +42,7 @@ function CommissionsPageClient() {
programs: {
id: string;
name: string;
url: string;
logo: string;
commissions: number;
fees: number;
Expand Down Expand Up @@ -187,15 +189,23 @@ function CommissionsPageClient() {
id: "program",
header: "Program",
cell: ({ row }) => (
<div className="flex items-center gap-1.5">
<div className="flex items-center gap-1.5 text-sm font-medium">
<img
src={row.original.logo}
alt={row.original.name}
width={20}
height={20}
className="size-4 rounded-full"
/>
<span className="text-sm font-medium">{row.original.name}</span>
<span className="text-sm font-medium">{row.original.name}</span>•
<a
className="text-sm font-medium text-neutral-500 transition-colors hover:text-neutral-800"
href={row.original.url}
target="_blank"
rel="noopener noreferrer"
>
{getDomainWithoutWWW(row.original.url)}
</a>
</div>
),
meta: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,19 @@ export async function getTopProgramsByCommissions({
earnings: "desc",
},
},
take: 50,
take: 150,
});

const topPrograms = await prisma.program.findMany({
where: {
id: {
in: programCommissions.map(({ programId }) => programId),
},
NOT: {
slug: {
endsWith: "-staging",
},
},
},
include: {
workspace: {
Expand All @@ -66,7 +71,8 @@ export async function getTopProgramsByCommissions({
fees: commissions * payoutFee,
};
})
.filter(Boolean);
.filter(Boolean)
.slice(0, 100);

return topProgramsWithCommissions;
}
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,8 @@ export async function customerSubscriptionDeleted(
}

const owner = workspaceUsers[0];
if (owner.email && losesAdvancedFeatures) {

if (owner?.email && losesAdvancedFeatures) {
await sendEmail({
to: owner.email,
subject: "Your Advanced plan features have been removed",
Expand Down
2 changes: 1 addition & 1 deletion packages/prisma/schema/network.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ model DiscoveredPartner {

program Program @relation(fields: [programId], references: [id], onDelete: Cascade)
partner Partner @relation(fields: [partnerId], references: [id], onDelete: Cascade)
programEnrollment ProgramEnrollment? @relation(fields: [programId, partnerId], references: [programId, partnerId])
programEnrollment ProgramEnrollment? @relation(fields: [programId, partnerId], references: [programId, partnerId], onDelete: Cascade)

@@unique([programId, partnerId])
@@index(partnerId)
Expand Down
43 changes: 21 additions & 22 deletions packages/prisma/schema/program.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,8 @@ model Program {
sourceFraudEvents FraudEvent[] @relation("SourceFraudEvents")
fraudAlerts FraudAlert[]
referrals PartnerReferral[]

partnerTags PartnerTag[]
programPartnerTags ProgramPartnerTag[]
partnerTags PartnerTag[]
programPartnerTags ProgramPartnerTag[]

@@index(workspaceId)
@@index(addedToMarketplaceAt)
Expand Down Expand Up @@ -138,25 +137,25 @@ model ProgramEnrollment {
bannedAt DateTime?
bannedReason PartnerBannedReason?

partner Partner @relation(fields: [partnerId], references: [id], onUpdate: Cascade, onDelete: Cascade)
program Program @relation(fields: [programId], references: [id], onUpdate: Cascade, onDelete: Cascade)
links Link[]
customers Customer[]
partnerGroup PartnerGroup? @relation(fields: [groupId], references: [id])
application ProgramApplication? @relation(fields: [applicationId], references: [id])
clickReward Reward? @relation("ClickRewardEnrollments", fields: [clickRewardId], references: [id])
leadReward Reward? @relation("LeadRewardEnrollments", fields: [leadRewardId], references: [id])
saleReward Reward? @relation("SaleRewardEnrollments", fields: [saleRewardId], references: [id])
discount Discount? @relation(fields: [discountId], references: [id])
bountySubmissions BountySubmission[]
discountCodes DiscountCode[]
commissions Commission[]
payouts Payout[]
messages Message[]
fraudEventGroups FraudEventGroup[]
referrals PartnerReferral[]
fraudAlerts FraudAlert[]
discoveredPartner DiscoveredPartner?
partner Partner @relation(fields: [partnerId], references: [id], onUpdate: Cascade, onDelete: Cascade)
program Program @relation(fields: [programId], references: [id], onUpdate: Cascade, onDelete: Cascade)
links Link[]
customers Customer[]
partnerGroup PartnerGroup? @relation(fields: [groupId], references: [id])
application ProgramApplication? @relation(fields: [applicationId], references: [id])
clickReward Reward? @relation("ClickRewardEnrollments", fields: [clickRewardId], references: [id])
leadReward Reward? @relation("LeadRewardEnrollments", fields: [leadRewardId], references: [id])
saleReward Reward? @relation("SaleRewardEnrollments", fields: [saleRewardId], references: [id])
discount Discount? @relation(fields: [discountId], references: [id])
bountySubmissions BountySubmission[]
discountCodes DiscountCode[]
commissions Commission[]
payouts Payout[]
messages Message[]
fraudEventGroups FraudEventGroup[]
referrals PartnerReferral[]
fraudAlerts FraudAlert[]
discoveredPartner DiscoveredPartner?
programPartnerTags ProgramPartnerTag[]

// unique constraints
Expand Down
Loading