Skip to content

Commit fe127b7

Browse files
Merge pull request #850 from devtron-labs/fix/bulk-deploy-trigger
feat: add api options in service
2 parents 9b6b2ca + 6e34914 commit fe127b7

File tree

7 files changed

+61
-14
lines changed

7 files changed

+61
-14
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devtron-labs/devtron-fe-common-lib",
3-
"version": "1.19.0-pre-4",
3+
"version": "1.19.0-pre-5",
44
"description": "Supporting common component library",
55
"type": "module",
66
"main": "dist/index.js",
Lines changed: 17 additions & 0 deletions
Loading

src/Common/Common.service.ts

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import { MutableRefObject } from 'react'
1818
import moment from 'moment'
1919
import {
20+
getIsApprovalPolicyConfigured,
2021
sanitizeApprovalConfigData,
2122
sanitizeTargetPlatforms,
2223
sanitizeUserApprovalList,
@@ -49,6 +50,7 @@ import {
4950
EnvAppsMetaDTO,
5051
GetAppsInfoForEnvProps,
5152
AppMeta,
53+
ApprovalRuntimeStateType,
5254
} from './Types'
5355
import { ApiResourceType, STAGE_MAP } from '../Pages'
5456
import { 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

440461
export 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

448471
export function getClusterListMin() {
@@ -453,7 +476,10 @@ export function getClusterListMin() {
453476
export 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
}

src/Common/PopupMenu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ const Body = ({
189189
style = {},
190190
autoWidth = false,
191191
preventWheelDisable = false,
192-
noBackDrop,
192+
noBackDrop = true,
193193
}: PopupMenuBodyType) => {
194194
const { handleClose, popupPosition, opacity, callbackRef, buttonWidth } = usePopupContext()
195195
return popupPosition ? (

src/Common/Types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,8 @@ export interface CDMaterialListModalServiceUtilProps {
493493
artifactId?: number
494494
artifactStatus?: string
495495
disableDefaultSelection?: boolean
496+
isExceptionUser: boolean
497+
isApprovalConfigured: boolean
496498
}
497499

498500
export interface CDMaterialType {

src/Shared/Components/Illustration/Illustration.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import ImgCode from '@Illustrations/img-code.webp'
44
import ImgManOnRocket from '@Illustrations/img-man-on-rocket.webp'
5+
import { ReactComponent as ImgMechanicalOperation } from '@Illustrations/img-mechanical-operation.svg'
56
import ImgNoResult from '@Illustrations/img-no-result.webp'
67

78
// eslint-disable-next-line no-restricted-imports
89
import { IllustrationBase } from './IllustrationBase'
910
import { IllustrationBaseProps } from './types'
1011

1112
export const illustrationMap = {
13+
'img-mechanical-operation': ImgMechanicalOperation,
1214
'img-code': ImgCode,
1315
'img-man-on-rocket': ImgManOnRocket,
1416
'img-no-result': ImgNoResult,

0 commit comments

Comments
 (0)