From 2b5fe7a4338025baea24ad64947fe8b3ffdd9b92 Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Tue, 26 May 2026 22:40:23 -0700 Subject: [PATCH] [DRAFT]: Add more link indexes --- apps/web/ui/links/link-display.tsx | 73 +++++++++++++----------------- apps/web/ui/links/link-sort.tsx | 56 +++++++++++++---------- packages/prisma/schema/link.prisma | 1 + 3 files changed, 65 insertions(+), 65 deletions(-) diff --git a/apps/web/ui/links/link-display.tsx b/apps/web/ui/links/link-display.tsx index 401c52e0805..e89618188a1 100644 --- a/apps/web/ui/links/link-display.tsx +++ b/apps/web/ui/links/link-display.tsx @@ -2,7 +2,6 @@ import { linksDisplayProperties, LinksViewMode, } from "@/lib/links/links-display"; -import useWorkspace from "@/lib/swr/use-workspace"; import { Button, Popover, @@ -37,14 +36,10 @@ export default function LinkDisplay() { reset, } = useContext(LinksDisplayContext); - const { isMegaWorkspace } = useWorkspace(); - const [openPopover, setOpenPopover] = useState(false); const { queryParams } = useRouterStuff(); - useKeyboardShortcut("a", () => setShowArchived((o) => !o), { - enabled: !isMegaWorkspace, - }); + useKeyboardShortcut("a", () => setShowArchived((o) => !o)); return ( - {!isMegaWorkspace && ( -
- - - Ordering - -
- -
+
+ + + Ordering + +
+
- )} - {!isMegaWorkspace && ( -
-
-
- - - A - -
- Show archived links -
-
- { - setShowArchived(checked); - queryParams({ - del: [ - "showArchived", // Remove legacy query param - "page", // Reset pagination - ], - }); - }} - /> +
+
+
+
+ + + A +
+ Show archived links
- )} +
+ { + setShowArchived(checked); + queryParams({ + del: [ + "showArchived", // Remove legacy query param + "page", // Reset pagination + ], + }); + }} + /> +
+
Display Properties diff --git a/apps/web/ui/links/link-sort.tsx b/apps/web/ui/links/link-sort.tsx index bd7d562f87b..6a3f407bf38 100644 --- a/apps/web/ui/links/link-sort.tsx +++ b/apps/web/ui/links/link-sort.tsx @@ -1,4 +1,5 @@ import { linksSortOptions } from "@/lib/links/links-display"; +import useWorkspace from "@/lib/swr/use-workspace"; import { IconMenu, Popover, Tick, useRouterStuff } from "@dub/ui"; import { cn } from "@dub/utils"; import { ChevronDown, SortDesc } from "lucide-react"; @@ -7,6 +8,7 @@ import { LinksDisplayContext } from "./links-display-provider"; export default function LinkSort() { const { queryParams } = useRouterStuff(); + const { isMegaWorkspace } = useWorkspace(); const [openPopover, setOpenPopover] = useState(false); @@ -18,30 +20,36 @@ export default function LinkSort() { - {linksSortOptions.map(({ display, slug }) => ( - - ))} + {linksSortOptions + .filter( + ({ slug }) => + // for mega workspaces, we don't show the clicks and last clicked options + !isMegaWorkspace || !["clicks", "lastClicked"].includes(slug), + ) + .map(({ display, slug }) => ( + + ))}
} openPopover={openPopover} diff --git a/packages/prisma/schema/link.prisma b/packages/prisma/schema/link.prisma index cd5c7d5a919..96624c46d95 100644 --- a/packages/prisma/schema/link.prisma +++ b/packages/prisma/schema/link.prisma @@ -97,6 +97,7 @@ model Link { @@index([projectId, tenantId]) // for filtering by tenantId @@index([projectId, url(length: 500)]) // for upserting a link by URL @@index([projectId, folderId, archived, createdAt(sort: Desc)]) // most getLinksForWorkspace queries + @@index([projectId, folderId, archived, saleAmount(sort: Desc)]) // getLinksForWorkspace queries sorted by saleAmount @@index([programId, partnerId]) // for getting a referral link (programId + partnerId) @@index(partnerId) // for getting links by partnerId @@index([domain, createdAt]) // for bulk link deletion workflows (by domain) + deleting old short-lived links