@@ -36,6 +36,7 @@ import {
36
36
ImageApprovalPolicyUserGroupDataType ,
37
37
ImageApprovalPolicyType ,
38
38
ImageApprovalUsersInfoDTO ,
39
+ UserApprovalMetadataType ,
39
40
} from './Types'
40
41
import { ApiResourceType } from '../Pages'
41
42
import { getIsManualApprovalSpecific , sanitizeUserApprovalConfig , stringComparatorBySortOrder } from '@Shared/Helpers'
@@ -87,6 +88,23 @@ export function setImageTags(request, pipelineId: number, artifactId: number) {
87
88
return post ( `${ ROUTES . IMAGE_TAGGING } /${ pipelineId } /${ artifactId } ` , request )
88
89
}
89
90
91
+ const sanitizeApprovalConfigFromApprovalMetadata = ( approvalMetadata : UserApprovalMetadataType ) :UserApprovalMetadataType => {
92
+ if ( ! approvalMetadata ) {
93
+ return null
94
+ }
95
+
96
+ const approvedUsersData = approvalMetadata . approvedUsersData || [ ]
97
+
98
+ return {
99
+ ...approvalMetadata ,
100
+ approvedUsersData : approvedUsersData . map ( ( userData ) => ( {
101
+ ...userData ,
102
+ userGroups : userData . userGroups ?. filter ( ( group ) => ! ! group ?. identifier && ! ! group ?. name ) ?? [ ] ,
103
+ } ) ) ,
104
+ approvalConfig : sanitizeUserApprovalConfig ( approvalMetadata . approvalConfig ) ,
105
+ }
106
+ }
107
+
90
108
const cdMaterialListModal = (
91
109
artifacts : any [ ] ,
92
110
offset : number ,
@@ -137,7 +155,7 @@ const cdMaterialListModal = (
137
155
vulnerable : material . vulnerable ,
138
156
runningOnParentCd : material . runningOnParentCd ,
139
157
artifactStatus : artifactStatusValue ,
140
- userApprovalMetadata : material . userApprovalMetadata ,
158
+ userApprovalMetadata : sanitizeApprovalConfigFromApprovalMetadata ( material . userApprovalMetadata ) ,
141
159
triggeredBy : material . triggeredBy ,
142
160
isVirtualEnvironment : material . isVirtualEnvironment ,
143
161
imageComment : material . imageComment ,
@@ -221,7 +239,7 @@ const getImageApprovalPolicyDetailsFromMaterialResult = (cdMaterialsResult): Ima
221
239
const validGroups = userApprovalConfig . userGroups . map ( ( group ) => group . identifier )
222
240
223
241
const usersList = Object . keys ( imageApprovalUsersInfo ) . filter ( ( user ) => user !== DefaultUserKey . system )
224
- const userToGroupMap = usersList . reduce (
242
+ const groupIdentifierToUsersMap = usersList . reduce (
225
243
( acc , user ) => {
226
244
const userGroups = imageApprovalUsersInfo [ user ] || [ ]
227
245
userGroups . forEach ( ( group ) => {
@@ -242,7 +260,7 @@ const getImageApprovalPolicyDetailsFromMaterialResult = (cdMaterialsResult): Ima
242
260
( acc , group ) => {
243
261
const identifier = group . identifier
244
262
// No need of handling api tokens here since they are not part of user groups
245
- const users = Object . keys ( userToGroupMap [ identifier ] || { } ) . sort ( stringComparatorBySortOrder )
263
+ const users = Object . keys ( groupIdentifierToUsersMap [ identifier ] || { } ) . sort ( stringComparatorBySortOrder )
246
264
247
265
acc [ identifier ] = {
248
266
dataStore : users . reduce (
0 commit comments