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 && (