17
17
import { useEffect } from 'react'
18
18
import { EMPTY_STATE_STATUS , SCAN_TOOL_ID_TRIVY } from '@Shared/constants'
19
19
import { SeverityCount } from '@Shared/types'
20
- import { Progressing , useAsync } from '../../../../Common'
20
+ import { Progressing } from '../../../../Common'
21
21
import { ScannedByToolModal } from '../../ScannedByToolModal'
22
- import { getLastExecutionByArtifactAppEnv } from './service'
23
22
import { VulnerabilitiesProps } from './types'
24
23
import { SecuritySummaryCard } from '../SecuritySummaryCard'
25
- import { getSecurityScan } from '../SecurityModal'
24
+ import { getSeverityCountFromSummary , getTotalSeverityCount } from '../utils'
25
+ import { useGetSecurityVulnerabilities } from './utils'
26
26
27
27
const Vulnerabilities = ( {
28
28
isScanned,
@@ -33,33 +33,25 @@ const Vulnerabilities = ({
33
33
setVulnerabilityCount,
34
34
isScanV2Enabled,
35
35
} : VulnerabilitiesProps ) => {
36
- const [ areVulnerabilitiesLoading , vulnerabilitiesResponse , vulnerabilitiesError , reloadVulnerabilities ] = useAsync (
37
- ( ) => getLastExecutionByArtifactAppEnv ( artifactId , applicationId , environmentId ) ,
38
- [ ] ,
39
- isScanned && isScanEnabled && ! isScanV2Enabled ,
40
- {
41
- resetOnChange : false ,
42
- } ,
43
- )
44
-
45
- const [ scanResultLoading , scanResultResponse , scanResultError , reloadScanResult ] = useAsync (
46
- ( ) => getSecurityScan ( { artifactId, appId : applicationId , envId : environmentId } ) ,
47
- [ ] ,
48
- isScanned && isScanEnabled && isScanV2Enabled ,
49
- {
50
- resetOnChange : false ,
51
- } ,
52
- )
36
+ const { scanDetailsLoading, scanResultResponse, executionDetailsResponse, scanDetailsError, reloadScanDetails } =
37
+ useGetSecurityVulnerabilities ( {
38
+ appId : applicationId ,
39
+ envId : environmentId ,
40
+ artifactId,
41
+ isScanEnabled,
42
+ isScanned,
43
+ isScanV2Enabled,
44
+ } )
53
45
54
46
useEffect ( ( ) => {
55
47
if ( scanResultResponse && isScanV2Enabled ) {
56
48
setVulnerabilityCount ( scanResultResponse . result . imageScan . vulnerability ?. list ?. length )
57
49
return
58
50
}
59
- if ( vulnerabilitiesResponse && ! isScanV2Enabled ) {
60
- setVulnerabilityCount ( vulnerabilitiesResponse . result . vulnerabilities ?. length )
51
+ if ( executionDetailsResponse && ! isScanV2Enabled ) {
52
+ setVulnerabilityCount ( executionDetailsResponse . result . vulnerabilities ?. length )
61
53
}
62
- } , [ vulnerabilitiesResponse , scanResultResponse ] )
54
+ } , [ executionDetailsResponse , scanResultResponse ] )
63
55
64
56
if ( ! isScanEnabled ) {
65
57
return (
@@ -69,7 +61,7 @@ const Vulnerabilities = ({
69
61
)
70
62
}
71
63
72
- if ( areVulnerabilitiesLoading || scanResultLoading ) {
64
+ if ( scanDetailsLoading ) {
73
65
return (
74
66
< div className = "security-tab-empty" >
75
67
< Progressing />
@@ -79,7 +71,7 @@ const Vulnerabilities = ({
79
71
80
72
if (
81
73
! isScanned ||
82
- ( vulnerabilitiesResponse && ! vulnerabilitiesResponse . result . scanned ) ||
74
+ ( executionDetailsResponse && ! executionDetailsResponse . result . scanned ) ||
83
75
( scanResultResponse && ! scanResultResponse ?. result . scanned )
84
76
) {
85
77
return (
@@ -89,34 +81,23 @@ const Vulnerabilities = ({
89
81
)
90
82
}
91
83
92
- if ( vulnerabilitiesError || scanResultError ) {
84
+ if ( scanDetailsError ) {
93
85
return (
94
86
< div className = "security-tab-empty" >
95
87
< p className = "security-tab-empty__title" > Failed to fetch vulnerabilities</ p >
96
- < button
97
- className = "cta secondary"
98
- type = "button"
99
- onClick = { isScanV2Enabled ? reloadScanResult : reloadVulnerabilities }
100
- >
88
+ < button className = "cta secondary" type = "button" onClick = { reloadScanDetails } >
101
89
Reload
102
90
</ button >
103
91
</ div >
104
92
)
105
93
}
106
94
107
- const imageScanSeverities = scanResultResponse ?. result . imageScan . vulnerability ?. summary . severities
95
+ const scanResultSeverities = scanResultResponse ?. result . imageScan . vulnerability ?. summary . severities
108
96
const severityCount : SeverityCount = isScanV2Enabled
109
- ? {
110
- critical : imageScanSeverities ?. CRITICAL || 0 ,
111
- high : imageScanSeverities ?. HIGH || 0 ,
112
- medium : imageScanSeverities ?. MEDIUM || 0 ,
113
- low : imageScanSeverities ?. LOW || 0 ,
114
- unknown : imageScanSeverities ?. UNKNOWN || 0 ,
115
- }
116
- : vulnerabilitiesResponse . result . severityCount
97
+ ? getSeverityCountFromSummary ( scanResultSeverities )
98
+ : executionDetailsResponse . result . severityCount ?? { critical : 0 , high : 0 , medium : 0 , low : 0 , unknown : 0 }
117
99
118
- const totalCount =
119
- severityCount . critical + severityCount . high + severityCount . low + severityCount . medium + severityCount . unknown
100
+ const totalCount = getTotalSeverityCount ( severityCount )
120
101
121
102
if ( ! totalCount ) {
122
103
return (
@@ -126,11 +107,13 @@ const Vulnerabilities = ({
126
107
</ p >
127
108
< p > { EMPTY_STATE_STATUS . CI_DEATILS_NO_VULNERABILITY_FOUND . SUBTITLE } </ p >
128
109
< p className = "security-tab-empty__subtitle" >
129
- { vulnerabilitiesResponse ?. result . lastExecution ??
130
- scanResultResponse ?. result . imageScan . vulnerability . list [ 0 ] . StartedOn }
110
+ { executionDetailsResponse ?. result . lastExecution ??
111
+ scanResultResponse ?. result . imageScan . vulnerability ? .list [ 0 ] . StartedOn }
131
112
</ p >
132
113
< div className = "pt-8 pb-8 pl-16 pr-16 flexbox dc__align-items-center" >
133
- < ScannedByToolModal scanToolId = { vulnerabilitiesResponse ?. result . scanToolId ?? SCAN_TOOL_ID_TRIVY } />
114
+ < ScannedByToolModal
115
+ scanToolId = { executionDetailsResponse ?. result . scanToolId ?? SCAN_TOOL_ID_TRIVY }
116
+ />
134
117
</ div >
135
118
</ div >
136
119
)
@@ -140,7 +123,7 @@ const Vulnerabilities = ({
140
123
< div className = "p-12" >
141
124
< SecuritySummaryCard
142
125
severityCount = { severityCount }
143
- scanToolId = { vulnerabilitiesResponse ?. result . scanToolId ?? SCAN_TOOL_ID_TRIVY }
126
+ scanToolId = { executionDetailsResponse ?. result . scanToolId ?? SCAN_TOOL_ID_TRIVY }
144
127
{ ...( isScanV2Enabled
145
128
? { appDetailsPayload : { appId : applicationId , envId : environmentId , artifactId } }
146
129
: { executionDetailsPayload : { appId : applicationId , envId : environmentId , artifactId } } ) }
0 commit comments