Files
prowler/ui/components/findings/table/finding-triage-submit.ts
Alan Buscaglia 587187419f feat(ui): add findings triage (#11704)
Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com>
2026-07-01 17:55:33 +02:00

57 lines
1.5 KiB
TypeScript

import {
type FindingTriageDetail,
type FindingTriageManualStatus,
type FindingTriageStatus,
isManualStatus,
type UpdateFindingTriageInput,
} from "@/types/findings-triage";
export interface BuildFindingTriageUpdateInputParams {
triage: FindingTriageDetail;
selectedStatus: FindingTriageStatus;
noteBody: string;
}
export function buildFindingTriageUpdateInput({
triage,
selectedStatus,
noteBody,
}: BuildFindingTriageUpdateInputParams): UpdateFindingTriageInput | null {
const trimmedNote = noteBody.trim();
const statusChanged = selectedStatus !== triage.status;
const shouldCreateFirstNote =
triage.notesCount === 0 && trimmedNote.length > 0;
const shouldUpdateExistingNote =
triage.notesCount > 0 &&
triage.noteId !== null &&
trimmedNote !== triage.noteBody;
const shouldIncludeStatus =
isManualStatus(selectedStatus) && (statusChanged || shouldCreateFirstNote);
if (
!shouldIncludeStatus &&
!shouldCreateFirstNote &&
!shouldUpdateExistingNote
) {
return null;
}
return {
findingId: triage.findingId,
findingUid: triage.findingUid,
triageId: triage.triageId,
notesCount: triage.notesCount,
noteId: triage.noteId,
isMuted: triage.isMuted,
...(shouldIncludeStatus
? {
status: selectedStatus as FindingTriageManualStatus,
previousStatus: triage.status,
}
: {}),
...(shouldCreateFirstNote || shouldUpdateExistingNote
? { note: trimmedNote }
: {}),
};
}