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
@@ -168,6 +168,13 @@ export const SecretScanningFindingsTable = ({ findings }: Props) => {
setPage 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) => { const handleSort = (column: FindingsOrderBy) => {
if (column === orderBy) { if (column === orderBy) {
toggleOrderDirection(); toggleOrderDirection();
@@ -288,12 +295,29 @@ export const SecretScanningFindingsTable = ({ findings }: Props) => {
<Th className=""> <Th className="">
<Checkbox <Checkbox
id="checkbox-select-all" id="checkbox-select-all"
isChecked={selectedRows.length === filteredFindings.length} isChecked={
onCheckedChange={() => currentPageDataIds.length > 0 &&
setSelectedRows((sr) => currentPageDataIds.every((id) => selectedRows.includes(id))
sr.length === filteredFindings.length ? [] : filteredFindings.map((f) => f.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) => { onClick={(e) => {
e.stopPropagation(); e.stopPropagation();
}} }}
@@ -356,7 +380,7 @@ export const SecretScanningFindingsTable = ({ findings }: Props) => {
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>
{filteredFindings.slice(offset, perPage * page).map((finding) => ( {currentPageData.map((finding) => (
<SecretScanningFindingRow <SecretScanningFindingRow
isSelected={selectedRows.includes(finding.id)} isSelected={selectedRows.includes(finding.id)}
onToggleSelect={(v) => onToggleSelect={(v) =>
@@ -144,8 +144,11 @@ export const SecretScanningUpdateFindingModal = ({ findings, isOpen, onOpenChang
return ( return (
<Modal isOpen={isOpen} onOpenChange={onOpenChange}> <Modal isOpen={isOpen} onOpenChange={onOpenChange}>
<ModalContent title="Update Finding" subTitle="Update the status or leave remarks"> <ModalContent
<Content findings={findings || []} onComplete={() => onOpenChange(false)} /> title={`Update Finding${findings.length === 1 ? "" : "s"}`}
subTitle="Update the status or leave remarks"
>
<Content findings={findings} onComplete={() => onOpenChange(false)} />
</ModalContent> </ModalContent>
</Modal> </Modal>
); );