Skip to content

Commit 72533bc

Browse files
committed
user ui
1 parent b2a7a15 commit 72533bc

6 files changed

Lines changed: 26 additions & 9 deletions

File tree

src/components/ScanCenter.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ function ErrorView({ message, onBack, canGoBack }) {
153153

154154
// ─── Main ScanCenter ─────────────────────────────────────────────────────────
155155

156-
export default function ScanCenter() {
156+
export default function ScanCenter({ filterDismissed = false, includeFalsePositives = true }) {
157157
const { exit } = useApp();
158158

159159
const [step, setStep] = useState(STEPS.LOADING);
@@ -198,7 +198,7 @@ export default function ScanCenter() {
198198

199199
// ── Step 5: result type selected → fetch exactly one endpoint ──
200200
const handleSelectResultType = (item) =>
201-
_handleSelectResultType({ STEPS, item, selectedRepo, selectedScan, setSelectedResultType, setStep, setLoadingMsg, setError, setResults });
201+
_handleSelectResultType({ STEPS, item, selectedRepo, selectedScan, setSelectedResultType, setStep, setLoadingMsg, setError, setResults, filterDismissed, includeFalsePositives });
202202

203203
// ── Back navigation ──
204204
const goBack = {

src/index.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,13 @@ program
211211
program
212212
.command('scan-center')
213213
.description('Browse scan results interactively')
214-
.action(() => {
215-
render(React.createElement(ScanCenter));
214+
.option('--filter-dismissed', 'Exclude dismissed alerts from results (default: false)')
215+
.option('--no-false-positives', 'Exclude false positives from results (default: included)')
216+
.action((options) => {
217+
render(React.createElement(ScanCenter, {
218+
filterDismissed: options.filterDismissed ?? false,
219+
includeFalsePositives: options.falsePositives ?? true,
220+
}));
216221
});
217222

218223
program

src/scanCenter/handleSelectResultType.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,21 @@ import { fetchScanResults } from '../scans/fetchScanResults.js';
22
import { fetchAdvancedScanResults } from '../scans/fetchAdvancedScanResults.js';
33
import { fetchDismissedAlerts } from '../scans/fetchDismissedAlerts.js';
44

5-
export async function handleSelectResultType({ STEPS, item, selectedRepo, selectedScan, setSelectedResultType, setStep, setLoadingMsg, setError, setResults }) {
5+
export async function handleSelectResultType({ STEPS, item, selectedRepo, selectedScan, setSelectedResultType, setStep, setLoadingMsg, setError, setResults, filterDismissed = false, includeFalsePositives = true }) {
66
const rt = item.value;
77
setSelectedResultType(rt);
88
setStep(STEPS.LOADING);
99
setLoadingMsg(`Fetching ${item.label}…`);
1010

1111
const repo = selectedRepo.full_name;
1212
const commitId = selectedScan.commitId;
13+
const fetchOpts = { filterDismissed, includeFalsePositives };
1314
let res;
1415

1516
if (rt.kind === 'basic') {
16-
res = await fetchScanResults(repo, commitId, rt.value);
17+
res = await fetchScanResults(repo, commitId, rt.value, fetchOpts);
1718
} else if (rt.kind === 'advanced') {
18-
res = await fetchAdvancedScanResults(repo, commitId, rt.value);
19+
res = await fetchAdvancedScanResults(repo, commitId, rt.value, fetchOpts);
1920
} else if (rt.value === 'dismissed_alerts') {
2021
const r = await fetchDismissedAlerts(repo, 'security');
2122
res = r.success ? { success: true, issues: r.dismissedAlerts } : r;

src/scans/fetchAdvancedScanResults.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,12 @@ function normalizeAdvancedIssue(item, resultType) {
200200
* @param {string} repo - "org/repo-name"
201201
* @param {string} commitId - 40-char commit SHA
202202
* @param {string} resultType - one of ADVANCED_RESULT_TYPES values
203+
* @param {{ filterDismissed?: boolean, includeFalsePositives?: boolean }} [opts]
203204
* @returns {Promise<{ success: boolean, issues?: Array, healthyPackages?: Array, status?: string, error?: string }>}
204205
*/
205-
export async function fetchAdvancedScanResults(repo, commitId, resultType) {
206+
export async function fetchAdvancedScanResults(repo, commitId, resultType, opts = {}) {
207+
const { filterDismissed = false, includeFalsePositives = true } = opts;
208+
206209
if (!Object.values(ADVANCED_RESULT_TYPES).includes(resultType)) {
207210
return {
208211
success: false,
@@ -215,6 +218,8 @@ export async function fetchAdvancedScanResults(repo, commitId, resultType) {
215218
repo,
216219
commit_id: commitId,
217220
result_type: resultType,
221+
filter_dismissed: filterDismissed,
222+
include_false_positives: includeFalsePositives,
218223
});
219224

220225
if (!response) {

src/scans/fetchScanResults.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,12 @@ function extractCleanPath(fullPath, commitId, suffix = null) {
4949
* @param {string} repo - "org/repo-name"
5050
* @param {string} commitId - 40-char commit SHA
5151
* @param {string} resultType - one of VALID_RESULT_TYPES values
52+
* @param {{ filterDismissed?: boolean, includeFalsePositives?: boolean }} [opts]
5253
* @returns {Promise<{ success: boolean, issues?: Array, status?: string, error?: string }>}
5354
*/
54-
export async function fetchScanResults(repo, commitId, resultType) {
55+
export async function fetchScanResults(repo, commitId, resultType, opts = {}) {
56+
const { filterDismissed = false, includeFalsePositives = true } = opts;
57+
5558
if (!Object.values(VALID_RESULT_TYPES).includes(resultType)) {
5659
return {
5760
success: false,
@@ -64,6 +67,8 @@ export async function fetchScanResults(repo, commitId, resultType) {
6467
repo,
6568
commit_id: commitId,
6669
result_type: resultType,
70+
filter_dismissed: filterDismissed,
71+
include_false_positives: includeFalsePositives,
6772
});
6873

6974
if (!response) {

src/utils/fetchApi.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const fetchApi = async (endpoint, method = 'GET', body = null) => {
2222
}
2323

2424
try {
25+
console.error(`API Request: ${url} ${method} ${JSON.stringify(body)}`);
2526
const response = await fetch(url, options);
2627

2728
if (response.status === 403) {

0 commit comments

Comments
 (0)