Greptile review fixes + pagination tweaks

This commit is contained in:
x032205
2025-06-12 01:39:23 -04:00
parent aa577b095c
commit 348f4b9787
2 changed files with 35 additions and 8 deletions

View File

@@ -168,6 +168,13 @@ export const SecretScanningFindingsTable = ({ findings }: Props) => {
setPage
});
const currentPageData = useMemo(
() => filteredFindings.slice(offset, perPage * page),
[filteredFindings, offset, perPage, page]
);
const currentPageDataIds = useMemo(() => currentPageData.map((f) => f.id), [currentPageData]);
const handleSort = (column: FindingsOrderBy) => {
if (column === orderBy) {
toggleOrderDirection();
@@ -288,12 +295,29 @@ export const SecretScanningFindingsTable = ({ findings }: Props) => {
<Th className="">
<Checkbox
id="checkbox-select-all"
isChecked={selectedRows.length === filteredFindings.length}
onCheckedChange={() =>
setSelectedRows((sr) =>
sr.length === filteredFindings.length ? [] : filteredFindings.map((f) => f.id)
)
isChecked={
currentPageDataIds.length > 0 &&
currentPageDataIds.every((id) => selectedRows.includes(id))
}
onCheckedChange={() => {
const allCurrentlySelectedOnPage =
currentPageDataIds.length > 0 &&
currentPageDataIds.every((id) => selectedRows.includes(id));
if (allCurrentlySelectedOnPage) {
// Deselect all on current page
setSelectedRows((prev) =>
prev.filter((rowId) => !currentPageDataIds.includes(rowId))
);
} else {
// Select all on current page
setSelectedRows((prev) => {
const newSelectedRows = new Set(prev);
currentPageDataIds.forEach((id) => newSelectedRows.add(id));
return Array.from(newSelectedRows);
});
}
}}
onClick={(e) => {
e.stopPropagation();
}}
@@ -356,7 +380,7 @@ export const SecretScanningFindingsTable = ({ findings }: Props) => {
</Tr>
</THead>
<TBody>
{filteredFindings.slice(offset, perPage * page).map((finding) => (
{currentPageData.map((finding) => (
<SecretScanningFindingRow
isSelected={selectedRows.includes(finding.id)}
onToggleSelect={(v) =>

View File

@@ -144,8 +144,11 @@ export const SecretScanningUpdateFindingModal = ({ findings, isOpen, onOpenChang
return (
<Modal isOpen={isOpen} onOpenChange={onOpenChange}>
<ModalContent title="Update Finding" subTitle="Update the status or leave remarks">
<Content findings={findings || []} onComplete={() => onOpenChange(false)} />
<ModalContent
title={`Update Finding${findings.length === 1 ? "" : "s"}`}
subTitle="Update the status or leave remarks"
>
<Content findings={findings} onComplete={() => onOpenChange(false)} />
</ModalContent>
</Modal>
);