1717import { MutableRefObject } from 'react'
1818import moment from 'moment'
1919import {
20+ getIsApprovalPolicyConfigured ,
2021 sanitizeApprovalConfigData ,
2122 sanitizeTargetPlatforms ,
2223 sanitizeUserApprovalList ,
@@ -49,6 +50,7 @@ import {
4950 EnvAppsMetaDTO ,
5051 GetAppsInfoForEnvProps ,
5152 AppMeta ,
53+ ApprovalRuntimeStateType ,
5254} from './Types'
5355import { ApiResourceType , STAGE_MAP } from '../Pages'
5456import { RefVariableType , VariableTypeFormat } from './CIPipeline.Types'
@@ -116,6 +118,8 @@ const cdMaterialListModal = ({
116118 artifactId,
117119 artifactStatus,
118120 disableDefaultSelection,
121+ isExceptionUser,
122+ isApprovalConfigured,
119123} : CDMaterialListModalServiceUtilProps ) => {
120124 if ( ! artifacts || ! artifacts . length ) return [ ]
121125
@@ -131,8 +135,15 @@ const cdMaterialListModal = ({
131135 artifactStatusValue = artifactStatus
132136 }
133137
138+ const isConsumedNonApprovedImage =
139+ ! isExceptionUser && isApprovalConfigured &&
140+ ( ! material . userApprovalMetadata ||
141+ material . userApprovalMetadata . approvalRuntimeState !== ApprovalRuntimeStateType . approved )
142+
134143 const selectImage =
135- ! isImageMarked && markFirstSelected && filterState === FilterStates . ALLOWED ? ! material . vulnerable : false
144+ ! isImageMarked && markFirstSelected && filterState === FilterStates . ALLOWED && ! isConsumedNonApprovedImage
145+ ? ! material . vulnerable
146+ : false
136147 if ( selectImage ) {
137148 isImageMarked = true
138149 }
@@ -328,17 +339,27 @@ export const processCDMaterialServiceResponse = (
328339 }
329340 }
330341
342+ const approvalInfo = processCDMaterialsApprovalInfo (
343+ stage === DeploymentNodeType . CD || stage === DeploymentNodeType . APPROVAL ,
344+ cdMaterialsResult ,
345+ )
346+
347+ const isApprovalConfigured = getIsApprovalPolicyConfigured (
348+ approvalInfo ?. deploymentApprovalInfo ?. approvalConfigData ,
349+ )
350+
351+ const isExceptionUser = approvalInfo ?. deploymentApprovalInfo ?. approvalConfigData ?. isExceptionUser ?? false
352+
331353 const materials = cdMaterialListModal ( {
332354 artifacts : cdMaterialsResult . ci_artifacts ,
333355 offset : offset ?? 0 ,
334356 artifactId : cdMaterialsResult . latest_wf_artifact_id ,
335357 artifactStatus : cdMaterialsResult . latest_wf_artifact_status ,
336358 disableDefaultSelection,
359+ isApprovalConfigured,
360+ isExceptionUser,
337361 } )
338- const approvalInfo = processCDMaterialsApprovalInfo (
339- stage === DeploymentNodeType . CD || stage === DeploymentNodeType . APPROVAL ,
340- cdMaterialsResult ,
341- )
362+
342363 const metaInfo = processCDMaterialsMetaInfo ( cdMaterialsResult )
343364 const imagePromotionInfo = processImagePromotionInfo ( cdMaterialsResult )
344365
@@ -439,10 +460,12 @@ export function fetchChartTemplateVersions() {
439460
440461export const getDefaultConfig = ( ) : Promise < ResponseType > => get ( `${ ROUTES . NOTIFIER } /channel/config` )
441462
442- export function getEnvironmentListMinPublic ( includeAllowedDeploymentTypes ?: boolean ) {
443- return get (
444- `${ ROUTES . ENVIRONMENT_LIST_MIN } ?auth=false${ includeAllowedDeploymentTypes ? '&showDeploymentOptions=true' : '' } ` ,
445- )
463+ export function getEnvironmentListMinPublic ( includeAllowedDeploymentTypes ?: boolean , options ?: APIOptions ) {
464+ const url = getUrlWithSearchParams ( ROUTES . ENVIRONMENT_LIST_MIN , {
465+ auth : false ,
466+ ...( includeAllowedDeploymentTypes ? { showDeploymentOptions : true } : { } ) ,
467+ } )
468+ return get ( url , options )
446469}
447470
448471export function getClusterListMin ( ) {
@@ -453,7 +476,10 @@ export function getClusterListMin() {
453476export const getResourceGroupListRaw = ( clusterId : string ) : Promise < ResponseType < ApiResourceType > > =>
454477 get ( `${ ROUTES . API_RESOURCE } /${ ROUTES . GVK } /${ clusterId } ` )
455478
456- export function getNamespaceListMin ( clusterIdsCsv : string , abortControllerRef ?: APIOptions [ 'abortControllerRef' ] ) : Promise < EnvironmentListHelmResponse > {
479+ export function getNamespaceListMin (
480+ clusterIdsCsv : string ,
481+ abortControllerRef ?: APIOptions [ 'abortControllerRef' ] ,
482+ ) : Promise < EnvironmentListHelmResponse > {
457483 const URL = `${ ROUTES . NAMESPACE } /autocomplete?ids=${ clusterIdsCsv } `
458484 return get ( URL , { abortControllerRef } )
459485}
0 commit comments