Mass-update endpoint

This commit is contained in:
x032205
2025-06-12 01:59:47 -04:00
parent 348f4b9787
commit fec47ef81c
3 changed files with 93 additions and 9 deletions
@@ -140,6 +140,31 @@ export const useUpdateSecretScanningFinding = () => {
});
};
export const useUpdateMultipleSecretScanningFinding = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (findings: TUpdateSecretScanningFinding[]) => {
const { data } = await apiRequest.patch<TSecretScanningFindingResponse>(
`/api/v2/secret-scanning/findings`,
findings
);
return data.finding;
},
onSuccess: (_, findings) => {
queryClient.invalidateQueries({
queryKey: secretScanningV2Keys.listFindings(findings[0].projectId)
});
queryClient.invalidateQueries({
queryKey: secretScanningV2Keys.findingCount(findings[0].projectId)
});
queryClient.invalidateQueries({
queryKey: secretScanningV2Keys.dataSource()
});
}
});
};
export const useUpdateSecretScanningConfig = () => {
const queryClient = useQueryClient();
return useMutation({
@@ -17,6 +17,7 @@ import { SECRET_SCANNING_FINDING_STATUS_ICON_MAP } from "@app/helpers/secretScan
import {
SecretScanningFindingStatus,
TSecretScanningFinding,
useUpdateMultipleSecretScanningFinding,
useUpdateSecretScanningFinding
} from "@app/hooks/api/secretScanningV2";
@@ -40,6 +41,7 @@ type ContentProps = {
const Content = ({ findings, onComplete }: ContentProps) => {
const updateFinding = useUpdateSecretScanningFinding();
const updateMultipleFindings = useUpdateMultipleSecretScanningFinding();
const single = findings.length === 1;
@@ -52,17 +54,25 @@ const Content = ({ findings, onComplete }: ContentProps) => {
});
const onSubmit = async (data: FormType) => {
if (!data.status) return;
try {
for await (const finding of findings) {
// If a status wasn't set, don't update
if (data.status) {
await updateFinding.mutateAsync({
if (findings.length > 1) {
await updateMultipleFindings.mutateAsync(
findings.map((f) => ({
...data,
status: data.status,
findingId: finding.id,
projectId: finding.projectId
});
}
status: data.status!,
findingId: f.id,
projectId: f.projectId
}))
);
} else {
await updateFinding.mutateAsync({
...data,
status: data.status,
findingId: findings[0].id,
projectId: findings[0].projectId
});
}
createNotification({