diff --git a/app/(dashboard)/projects/[projectId]/page.tsx b/app/(dashboard)/projects/[projectId]/page.tsx index e0ef6aa..893fa72 100644 --- a/app/(dashboard)/projects/[projectId]/page.tsx +++ b/app/(dashboard)/projects/[projectId]/page.tsx @@ -196,6 +196,7 @@ export default async function ProjectPage({ params, searchParams }: ProjectPageP workspaceRole={null} totalPages={totalPages} currentPage={page} + pageSize={pageSize} directUploadsEnabled={directUploadsEnabled} directUploadProvider={directUploadProvider} /> @@ -227,6 +228,7 @@ export default async function ProjectPage({ params, searchParams }: ProjectPageP workspaceRole={workspaceRole} totalPages={totalPages} currentPage={page} + pageSize={pageSize} directUploadsEnabled={directUploadsEnabled} directUploadProvider={directUploadProvider} /> diff --git a/app/(dashboard)/projects/[projectId]/project-content-client.tsx b/app/(dashboard)/projects/[projectId]/project-content-client.tsx index c6387c2..7421712 100644 --- a/app/(dashboard)/projects/[projectId]/project-content-client.tsx +++ b/app/(dashboard)/projects/[projectId]/project-content-client.tsx @@ -70,6 +70,7 @@ interface ProjectContentClientProps { workspaceRole: string | null; totalPages: number; currentPage: number; + pageSize: number; directUploadsEnabled: boolean; directUploadProvider: DirectUploadProvider; } @@ -84,6 +85,7 @@ export function ProjectContentClient({ isOwner, totalPages, currentPage, + pageSize, directUploadsEnabled, directUploadProvider, }: ProjectContentClientProps) { @@ -223,13 +225,34 @@ export function ProjectContentClient({ toast.success( typeof body?.data?.message === 'string' ? body.data.message : 'Selected videos deleted' ); - router.refresh(); + + // The current page may now be out of range (e.g. we deleted every video + // on it). Clamp to the last valid page so the refresh lands on a page + // that still has videos instead of showing "No videos yet". + const remainingTotal = allVideoIds.filter((id) => !deletedIds.has(id)).length; + const newTotalPages = Math.max(1, Math.ceil(remainingTotal / pageSize)); + if (currentPage > newTotalPages) { + router.push(`?${createQueryString('page', newTotalPages.toString())}`); + } else { + router.refresh(); + } } catch { toast.error('Failed to delete selected videos'); } finally { setIsDeletingSelected(false); } - }, [canEdit, isDeletingSelected, projectId, router, selectedCount, selectedVideoIds]); + }, [ + allVideoIds, + canEdit, + createQueryString, + currentPage, + isDeletingSelected, + pageSize, + projectId, + router, + selectedCount, + selectedVideoIds, + ]); return ( <>