diff --git a/app/(dashboard)/projects/[projectId]/project-content-client.tsx b/app/(dashboard)/projects/[projectId]/project-content-client.tsx index a75edc2..54c844f 100644 --- a/app/(dashboard)/projects/[projectId]/project-content-client.tsx +++ b/app/(dashboard)/projects/[projectId]/project-content-client.tsx @@ -18,11 +18,18 @@ import { Download, Loader2, Trash2, + ChevronDown, } from 'lucide-react'; import { toast } from 'sonner'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from '@/components/ui/dropdown-menu'; import { AlertDialog, AlertDialogAction, @@ -167,13 +174,17 @@ export function ProjectContentClient({ }, []); const startProjectDownload = useCallback( - async (videoIds?: string[]) => { + async (videoIds?: string[], options?: { allVersions?: boolean }) => { if (!canDownloadProject || isDownloading) return; - const query = - videoIds && videoIds.length > 0 - ? `?videoIds=${encodeURIComponent(videoIds.join(','))}` - : ''; + const searchParams = new URLSearchParams(); + if (videoIds && videoIds.length > 0) { + searchParams.set('videoIds', videoIds.join(',')); + } + if (options?.allVersions) { + searchParams.set('versions', 'all'); + } + const query = searchParams.toString() ? `?${searchParams.toString()}` : ''; setIsDownloading(true); try { @@ -325,19 +336,27 @@ export function ProjectContentClient({ )} {canDownloadProject && localVideos.length > 0 && !selectionMode && ( - + + + + + + startProjectDownload()}> + Latest version only + + startProjectDownload(undefined, { allVersions: true })}> + All versions + + + )} {canEdit && ( {canDownloadProject && ( - + + + + + + startProjectDownload(selectedVideoIds)}> + Latest version only + + startProjectDownload(selectedVideoIds, { allVersions: true })} + > + All versions + + + )} {canEdit && (