From d8907536d3e4bc16c240a0d8fb4799f0be9bce9e Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Wed, 18 Feb 2026 12:09:57 -0800 Subject: [PATCH 1/5] add gray to RESOURCE_COLORS_DATA --- .../programs/delete-program-enrollments.ts | 62 +++++++++++++++++++ apps/web/ui/colors.ts | 5 ++ 2 files changed, 67 insertions(+) create mode 100644 apps/web/scripts/programs/delete-program-enrollments.ts diff --git a/apps/web/scripts/programs/delete-program-enrollments.ts b/apps/web/scripts/programs/delete-program-enrollments.ts new file mode 100644 index 00000000000..9fa63740d81 --- /dev/null +++ b/apps/web/scripts/programs/delete-program-enrollments.ts @@ -0,0 +1,62 @@ +import { prisma } from "@dub/prisma"; +import "dotenv-flow/config"; +import { bulkDeleteLinks } from "../../lib/api/links/bulk-delete-links"; + +const programId = "prog_xxx"; + +async function main() { + while (true) { + const programEnrollments = await prisma.programEnrollment.findMany({ + where: { + programId, + totalLeads: 0, + }, + take: 250, + include: { + links: true, + }, + }); + + if (programEnrollments.length === 0) { + console.log("No program enrollments found"); + break; + } + + const linksToDelete = programEnrollments.flatMap(({ links }) => links); + + // in case some of the links actually do have leads + if (linksToDelete.some(({ leads }) => leads > 0)) { + console.log( + `Found links with leads: ${linksToDelete + .filter(({ leads }) => leads > 0) + .map(({ shortLink }) => shortLink) + .join(", ")}`, + ); + break; + } + + await bulkDeleteLinks(linksToDelete); + + const deleteLinkPrisma = await prisma.link.deleteMany({ + where: { + id: { + in: linksToDelete.map(({ id }) => id), + }, + }, + }); + + console.log("deleteLinkPrisma", deleteLinkPrisma); + + const deleteProgramEnrollment = await prisma.programEnrollment.deleteMany({ + where: { + id: { + in: programEnrollments.map(({ id }) => id), + }, + }, + }); + + console.log("deleteProgramEnrollment", deleteProgramEnrollment); + } +} + +main(); diff --git a/apps/web/ui/colors.ts b/apps/web/ui/colors.ts index 39780dd0147..780f4da5ac1 100644 --- a/apps/web/ui/colors.ts +++ b/apps/web/ui/colors.ts @@ -31,6 +31,11 @@ export const RESOURCE_COLORS_DATA = [ tagVariants: "bg-brown-100 text-brown-600", groupVariants: "bg-brown-600", }, + { + color: "gray", + tagVariants: "bg-gray-100 text-gray-600", + groupVariants: "bg-gray-600", + }, ] as const; export const RESOURCE_COLORS = RESOURCE_COLORS_DATA.map( From 79d1ae932b2da7be5a4785ccbcc4027f0ac87ae6 Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Wed, 18 Feb 2026 12:59:58 -0800 Subject: [PATCH 2/5] add companyName to fulltext index --- apps/web/lib/api/partners/get-partners-count.ts | 1 + apps/web/lib/api/partners/get-partners.ts | 1 + packages/prisma/schema/partner.prisma | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/web/lib/api/partners/get-partners-count.ts b/apps/web/lib/api/partners/get-partners-count.ts index 8260481a9f6..85962d47318 100644 --- a/apps/web/lib/api/partners/get-partners-count.ts +++ b/apps/web/lib/api/partners/get-partners-count.ts @@ -30,6 +30,7 @@ export async function getPartnersCount( : { email: { search: sanitizeFullTextSearch(search) }, name: { search: sanitizeFullTextSearch(search) }, + companyName: { search: sanitizeFullTextSearch(search) }, } : {}), ...(partnerIds && { diff --git a/apps/web/lib/api/partners/get-partners.ts b/apps/web/lib/api/partners/get-partners.ts index 0d3156d4b59..af1bb8a97b7 100644 --- a/apps/web/lib/api/partners/get-partners.ts +++ b/apps/web/lib/api/partners/get-partners.ts @@ -45,6 +45,7 @@ export async function getPartners(filters: PartnerFilters) { : { email: { search: sanitizeFullTextSearch(search) }, name: { search: sanitizeFullTextSearch(search) }, + companyName: { search: sanitizeFullTextSearch(search) }, } : {}), }, diff --git a/packages/prisma/schema/partner.prisma b/packages/prisma/schema/partner.prisma index 6471ef04a0e..38dc51e0999 100644 --- a/packages/prisma/schema/partner.prisma +++ b/packages/prisma/schema/partner.prisma @@ -70,7 +70,7 @@ model Partner { @@index(discoverableAt) @@index(trustedAt) @@index(payoutMethodHash) - @@fulltext([email, name]) // For full-text search + @@fulltext([email, name, companyName]) // For full-text search } model PartnerInvite { From 3d6776e7b913e831eda7abdc438256f70a1bc222 Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Wed, 18 Feb 2026 13:02:49 -0800 Subject: [PATCH 3/5] update search placeholder --- .../[slug]/(ee)/program/partners/applications/page-client.tsx | 4 ++-- .../program/partners/applications/rejected/page-client.tsx | 4 ++-- .../[slug]/(ee)/program/partners/partners-table.tsx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/page-client.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/page-client.tsx index 9117a04468a..74d46c0edf0 100644 --- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/page-client.tsx +++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/page-client.tsx @@ -470,8 +470,8 @@ export function ProgramPartnersApplicationsPageClient() { onRemove={onRemove} /> diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/rejected/page-client.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/rejected/page-client.tsx index a966e7fd1f6..6453ac5d754 100644 --- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/rejected/page-client.tsx +++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/rejected/page-client.tsx @@ -413,8 +413,8 @@ export function ProgramPartnersRejectedApplicationsPageClient() { onRemove={onRemove} /> diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/partners-table.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/partners-table.tsx index ceb5c7fe8d5..5939c541d48 100644 --- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/partners-table.tsx +++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/partners-table.tsx @@ -576,8 +576,8 @@ export function PartnersTable() { onRemove={onRemove} /> From cc7fd271723817003a9106e45079fe400d185427 Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Wed, 18 Feb 2026 13:12:41 -0800 Subject: [PATCH 4/5] fix export partners status filter bug --- apps/web/ui/modals/export-partners-modal.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/ui/modals/export-partners-modal.tsx b/apps/web/ui/modals/export-partners-modal.tsx index c07e2f968c9..1e4cd2271cd 100644 --- a/apps/web/ui/modals/export-partners-modal.tsx +++ b/apps/web/ui/modals/export-partners-modal.tsx @@ -41,7 +41,7 @@ function ExportPartnersModal({ const columnCheckboxId = useId(); const { program } = useProgram(); const { id: workspaceId } = useWorkspace(); - const { getQueryString } = useRouterStuff(); + const { getQueryString, searchParamsObj } = useRouterStuff(); const { control, @@ -65,7 +65,7 @@ function ExportPartnersModal({ const params = { workspaceId, programId: program.id, - status: "approved", + status: searchParamsObj.status || "approved", ...(data.columns.length ? { columns: data.columns.join(",") } : undefined), From ea743df11d24541fc852de149ef58b9b136b3f43 Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Wed, 18 Feb 2026 13:29:03 -0800 Subject: [PATCH 5/5] fix link analytics href --- .../(enrolled)/customers/(index)/page-client.tsx | 8 ++++---- .../[programSlug]/(enrolled)/links/partner-link-card.tsx | 5 ++--- apps/web/ui/customers/customer-activity-list.tsx | 2 +- apps/web/ui/customers/customer-details-column.tsx | 2 +- apps/web/ui/domains/domain-card.tsx | 2 +- apps/web/ui/links/link-analytics-badge.tsx | 4 ++-- 6 files changed, 11 insertions(+), 12 deletions(-) diff --git a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/customers/(index)/page-client.tsx b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/customers/(index)/page-client.tsx index 556e56289b1..e907915704b 100644 --- a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/customers/(index)/page-client.tsx +++ b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/customers/(index)/page-client.tsx @@ -27,7 +27,6 @@ import { getApexDomain, getPrettyUrl, } from "@dub/utils"; -import Link from "next/link"; import { useParams, useRouter } from "next/navigation"; import { useMemo } from "react"; import { usePartnerCustomerFilters } from "./use-partner-customer-filters"; @@ -132,8 +131,9 @@ export function ProgramCustomersPageClient() { accessorKey: "activity.link", cell: ({ row }) => row.original.activity.link ? ( - {getPrettyUrl(row.original.activity.link.shortLink)} - + ) : ( "-" ), diff --git a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/links/partner-link-card.tsx b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/links/partner-link-card.tsx index 5fd5129ef14..aa2bcde4361 100644 --- a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/links/partner-link-card.tsx +++ b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/links/partner-link-card.tsx @@ -182,7 +182,7 @@ const StatsBadge = memo(({ link }: { link: PartnerProfileLinkProps }) => { const As = showDetailedAnalytics ? Link : "div"; return ( {[ @@ -291,8 +291,7 @@ const StatsCharts = memo(({ link }: { link: PartnerProfileLinkProps }) => { key={chart.key} href={`/programs/${programEnrollment?.program.slug}/analytics${getQueryString( { - domain: link.domain, - key: link.key, + linkId: link.id, event: chart.key === "saleAmount" ? "sales" : chart.key, }, )}`} diff --git a/apps/web/ui/customers/customer-activity-list.tsx b/apps/web/ui/customers/customer-activity-list.tsx index 17ef1c5245f..7166f524e52 100644 --- a/apps/web/ui/customers/customer-activity-list.tsx +++ b/apps/web/ui/customers/customer-activity-list.tsx @@ -28,7 +28,7 @@ const activityData = { diff --git a/apps/web/ui/links/link-analytics-badge.tsx b/apps/web/ui/links/link-analytics-badge.tsx index e4f26044064..b6a265095cc 100644 --- a/apps/web/ui/links/link-analytics-badge.tsx +++ b/apps/web/ui/links/link-analytics-badge.tsx @@ -86,7 +86,7 @@ export function LinkAnalyticsBadge({ return isMobile ? ( @@ -147,7 +147,7 @@ export function LinkAnalyticsBadge({ } >