mirror of
https://github.com/yusufipk/OpenFrame.git
synced 2026-09-11 17:46:06 +00:00
fix: clamp page after bulk video delete
When every video on the current page was bulk-deleted, router.refresh() re-queried the same out-of-range page and rendered "No videos yet" even though earlier pages still had videos. Clamp to the last valid page based on the remaining video count, falling back to refresh in place.
This commit is contained in:
@@ -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}
|
||||
/>
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
|
||||
Reference in New Issue
Block a user