Skip to content

Commit c86dc12

Browse files
committed
Revert unnecessary threats data views updates
1 parent 010b2c1 commit c86dc12

File tree

2 files changed

+55
-64
lines changed

2 files changed

+55
-64
lines changed

projects/js-packages/components/components/threats-data-views/index.tsx

Lines changed: 23 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { getThreatType, type Threat, type ThreatStatus } from '@automattic/jetpack-scan';
1+
import { getThreatType, type Threat } from '@automattic/jetpack-scan';
22
import {
33
type Action,
44
type ActionButton,
@@ -238,6 +238,28 @@ export default function ThreatsDataViews( {
238238
);
239239
},
240240
},
241+
{
242+
id: THREAT_FIELD_STATUS,
243+
label: __( 'Status', 'jetpack-components' ),
244+
elements: THREAT_STATUSES,
245+
getValue( { item }: { item: Threat } ) {
246+
if ( ! item.status ) {
247+
return 'current';
248+
}
249+
return (
250+
THREAT_STATUSES.find( ( { value } ) => value === item.status )?.value ?? item.status
251+
);
252+
},
253+
render( { item }: { item: Threat } ) {
254+
if ( item.status ) {
255+
const status = THREAT_STATUSES.find( ( { value } ) => value === item.status );
256+
if ( status ) {
257+
return <Badge variant={ status?.variant }>{ status.label }</Badge>;
258+
}
259+
}
260+
return <Badge variant="warning">{ __( 'Active', 'jetpack-components' ) }</Badge>;
261+
},
262+
},
241263
{
242264
id: THREAT_FIELD_TYPE,
243265
label: __( 'Type', 'jetpack-components' ),
@@ -278,33 +300,6 @@ export default function ThreatsDataViews( {
278300
return item.extension ? item.extension.slug : '';
279301
},
280302
},
281-
...( dataFields.includes( 'status' )
282-
? [
283-
{
284-
id: THREAT_FIELD_STATUS,
285-
label: __( 'Status', 'jetpack-components' ),
286-
elements: THREAT_STATUSES,
287-
getValue( { item }: { item: Threat } ) {
288-
if ( ! item.status ) {
289-
return 'current';
290-
}
291-
return (
292-
THREAT_STATUSES.find( ( { value } ) => value === item.status )?.value ??
293-
item.status
294-
);
295-
},
296-
render( { item }: { item: Threat } ) {
297-
if ( item.status ) {
298-
const status = THREAT_STATUSES.find( ( { value } ) => value === item.status );
299-
if ( status ) {
300-
return <Badge variant={ status?.variant }>{ status.label }</Badge>;
301-
}
302-
}
303-
return <Badge variant="warning">{ __( 'Active', 'jetpack-components' ) }</Badge>;
304-
},
305-
},
306-
]
307-
: [] ),
308303
...( dataFields.includes( 'severity' )
309304
? [
310305
{
@@ -480,33 +475,6 @@ export default function ThreatsDataViews( {
480475
isThreatEligibleForUnignore,
481476
] );
482477

483-
/**
484-
* Memoized function to determine if a status filter is selected.
485-
*
486-
* @param {Array} threatStatuses - List of threat statuses.
487-
*/
488-
const isStatusFilterSelected = useMemo(
489-
() => ( threatStatuses: ThreatStatus[] ) =>
490-
view.filters.some(
491-
filter =>
492-
filter.field === 'status' &&
493-
Array.isArray( filter.value ) &&
494-
filter.value.length === threatStatuses.length &&
495-
threatStatuses.every( threatStatus => filter.value.includes( threatStatus ) )
496-
),
497-
[ view.filters ]
498-
);
499-
500-
const selectedStatusFilter = useMemo( () => {
501-
if ( isStatusFilterSelected( [ 'current' ] ) ) {
502-
return 'active' as const;
503-
}
504-
if ( isStatusFilterSelected( [ 'fixed', 'ignored' ] ) ) {
505-
return 'historic' as const;
506-
}
507-
return null;
508-
}, [ isStatusFilterSelected ] );
509-
510478
/**
511479
* Apply the view settings (i.e. filters, sorting, pagination) to the dataset.
512480
*
@@ -548,7 +516,6 @@ export default function ThreatsDataViews( {
548516
data={ data }
549517
view={ view }
550518
onChangeView={ onChangeView }
551-
selectedStatusFilter={ selectedStatusFilter }
552519
/>
553520
}
554521
/>

projects/js-packages/components/components/threats-data-views/threats-status-toggle-group-control.tsx

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,20 @@ import styles from './styles.module.scss';
1010

1111
/**
1212
* ToggleGroupControl component for filtering threats by status.
13-
* @param {object} props - Component props.
14-
* @param { Threat[]} props.data - Threats data.
15-
* @param { View } props.view - The current view.
16-
* @param { string } props.selectedStatusFilter - The selected status filter.
17-
* @param { Function } props.onChangeView - Callback function to handle view changes.
13+
* @param {object} props - Component props.
14+
* @param { Threat[]} props.data - Threats data.
15+
* @param { View } props.view - The current view.
16+
* @param { Function } props.onChangeView - Callback function to handle view changes.
1817
*
1918
* @return {JSX.Element|null} The component or null.
2019
*/
2120
export default function ThreatsStatusToggleGroupControl( {
2221
data,
2322
view,
24-
selectedStatusFilter,
2523
onChangeView,
2624
}: {
2725
data: Threat[];
2826
view: View;
29-
selectedStatusFilter: string;
3027
onChangeView: ( newView: View ) => void;
3128
} ): JSX.Element {
3229
/**
@@ -91,6 +88,33 @@ export default function ThreatsStatusToggleGroupControl( {
9188
[ view, onChangeView ]
9289
);
9390

91+
/**
92+
* Memoized function to determine if a status filter is selected.
93+
*
94+
* @param {Array} threatStatuses - List of threat statuses.
95+
*/
96+
const isStatusFilterSelected = useMemo(
97+
() => ( threatStatuses: ThreatStatus[] ) =>
98+
view.filters.some(
99+
filter =>
100+
filter.field === 'status' &&
101+
Array.isArray( filter.value ) &&
102+
filter.value.length === threatStatuses.length &&
103+
threatStatuses.every( threatStatus => filter.value.includes( threatStatus ) )
104+
),
105+
[ view.filters ]
106+
);
107+
108+
const selectedValue = useMemo( () => {
109+
if ( isStatusFilterSelected( [ 'current' ] ) ) {
110+
return 'active' as const;
111+
}
112+
if ( isStatusFilterSelected( [ 'fixed', 'ignored' ] ) ) {
113+
return 'historic' as const;
114+
}
115+
return '' as const;
116+
}, [ isStatusFilterSelected ] );
117+
94118
if ( ! ( activeThreatsCount + historicThreatsCount ) ) {
95119
return null;
96120
}
@@ -100,7 +124,7 @@ export default function ThreatsStatusToggleGroupControl( {
100124
<div>
101125
<div className={ styles[ 'toggle-group-control' ] }>
102126
<ToggleGroupControl
103-
value={ selectedStatusFilter }
127+
value={ selectedValue }
104128
onChange={ onStatusFilterChange }
105129
isBlock
106130
hideLabelFromVision

0 commit comments

Comments
 (0)