@@ -77,7 +77,65 @@ export class MustacheHelper {
7777 if ( event . eventTypeId === EVENT_TYPE . ScoopNotification ) {
7878 return this . parseScoopNotification ( event )
7979 }
80+
81+ const date = moment ( event . eventTime ) ;
82+ const timestamp = isSlackNotification
83+ ? date . unix ( )
84+ : date . format ( 'dddd, MMMM Do YYYY hh:mm A [GMT]Z' ) ;
85+
8086 let baseURL = event . baseUrl ;
87+
88+ // Handle approval events FIRST (before checking pipelineType)
89+ if ( event . eventTypeId === EVENT_TYPE . Approval ) {
90+ let imageTagNames , imageComment , imageLink , approvalLink ;
91+ let index = - 1 ;
92+ if ( event . payload . dockerImageUrl ) index = event . payload . dockerImageUrl . lastIndexOf ( ":" ) ;
93+ if ( event . payload . imageTagNames ) imageTagNames = event . payload . imageTagNames ;
94+ if ( event . payload . imageComment ) imageComment = event . payload . imageComment ;
95+ if ( baseURL && event . payload . imageApprovalLink ) imageLink = `${ baseURL } ${ event . payload . imageApprovalLink } ` ;
96+ if ( baseURL && event . payload . approvalLink ) approvalLink = `${ baseURL } ${ event . payload . approvalLink } ` ;
97+
98+ return {
99+ eventTime : timestamp ,
100+ triggeredBy : event . payload . triggeredBy || "NA" ,
101+ appName : event . payload . appName || "NA" ,
102+ envName : event . payload . envName || "NA" ,
103+ pipelineName : event . payload . pipelineName || "NA" ,
104+ imageTag : index >= 0 ? event . payload . dockerImageUrl . substring ( index + 1 ) : "NA" ,
105+ comment :imageComment ,
106+ tags :imageTagNames ,
107+ imageApprovalLink :imageLink ,
108+ approvalLink :approvalLink ,
109+ }
110+ }
111+
112+ if ( event . eventTypeId === EVENT_TYPE . ConfigApproval ) {
113+ let protectConfigFileType , protectConfigFileName , protectConfigComment , protectConfigLink , envName , approvalLink ;
114+ if ( event . payload . protectConfigFileType ) protectConfigFileType = event . payload . protectConfigFileType ;
115+ if ( event . payload . protectConfigFileName ) protectConfigFileName = event . payload . protectConfigFileName ;
116+ if ( event . payload . protectConfigComment ) protectConfigComment = event . payload . protectConfigComment . split ( "\n" ) ;
117+ if ( baseURL && event . payload . protectConfigLink ) protectConfigLink = `${ baseURL } ${ event . payload . protectConfigLink } ` ;
118+ if ( baseURL && event . payload . approvalLink ) approvalLink = `${ baseURL } ${ event . payload . approvalLink } ` ;
119+ if ( ! event . payload . envName ) {
120+ envName = "Base configuration"
121+ }
122+ else {
123+ envName = event . payload . envName
124+ }
125+ return {
126+ eventTime : timestamp ,
127+ triggeredBy : event . payload . triggeredBy || "NA" ,
128+ appName : event . payload . appName || "NA" ,
129+ envName : envName ,
130+ protectConfigFileType :protectConfigFileType ,
131+ protectConfigFileName :protectConfigFileName ,
132+ protectConfigComment :protectConfigComment ,
133+ protectConfigLink :protectConfigLink ,
134+ approvalLink :approvalLink ,
135+ }
136+ }
137+
138+ // Now handle CI/CD events (which need material parsing)
81139 let material = event . payload . material ;
82140 let ciMaterials ;
83141 if ( event . eventTypeId !== EVENT_TYPE . Approval && event . eventTypeId !== EVENT_TYPE . ConfigApproval && event . eventTypeId != EVENT_TYPE . ImagePromotion ) {
@@ -116,12 +174,6 @@ export class MustacheHelper {
116174 } ) : [ ] ;
117175 }
118176
119-
120- const date = moment ( event . eventTime ) ;
121- const timestamp = isSlackNotification
122- ? date . unix ( )
123- : date . format ( 'dddd, MMMM Do YYYY hh:mm A [GMT]Z' ) ;
124-
125177 if ( event . pipelineType === "CI" ) {
126178 let buildHistoryLink ;
127179 if ( baseURL && event . payload . buildHistoryLink ) buildHistoryLink = `${ baseURL } ${ event . payload . buildHistoryLink } ` ;
@@ -163,52 +215,7 @@ export class MustacheHelper {
163215 triggeredWithoutApprovalStyle : event . isDeploymentDoneWithoutApproval ? 'block' : 'none'
164216 }
165217 }
166- else if ( event . eventTypeId === EVENT_TYPE . Approval ) {
167- let imageTagNames , imageComment , imageLink , approvalLink ;
168- let index = - 1 ;
169- if ( event . payload . dockerImageUrl ) index = event . payload . dockerImageUrl . lastIndexOf ( ":" ) ;
170- if ( event . payload . imageTagNames ) imageTagNames = event . payload . imageTagNames ;
171- if ( event . payload . imageComment ) imageComment = event . payload . imageComment ;
172- if ( baseURL && event . payload . imageApprovalLink ) imageLink = `${ baseURL } ${ event . payload . imageApprovalLink } ` ;
173- if ( baseURL && event . payload . approvalLink ) approvalLink = `${ baseURL } ${ event . payload . approvalLink } ` ;
174-
175- return {
176- eventTime : timestamp ,
177- triggeredBy : event . payload . triggeredBy || "NA" ,
178- appName : event . payload . appName || "NA" ,
179- envName : event . payload . envName || "NA" ,
180- pipelineName : event . payload . pipelineName || "NA" ,
181- imageTag : index >= 0 ? event . payload . dockerImageUrl . substring ( index + 1 ) : "NA" ,
182- comment :imageComment ,
183- tags :imageTagNames ,
184- imageApprovalLink :imageLink ,
185- approvalLink :approvalLink ,
186- }
187-
188-
189- }
190- else if ( event . eventTypeId === EVENT_TYPE . ConfigApproval ) {
191- let protectConfigFileType , protectConfigFileName , protectConfigComment , protectConfigLink , envName , approvalLink ;
192- if ( event . payload . protectConfigFileType ) protectConfigFileType = event . payload . protectConfigFileType ;
193- if ( event . payload . protectConfigFileName ) protectConfigFileName = event . payload . protectConfigFileName ;
194- if ( event . payload . protectConfigComment ) protectConfigComment = event . payload . protectConfigComment . split ( "\n" ) ;
195- if ( baseURL && event . payload . protectConfigLink ) protectConfigLink = `${ baseURL } ${ event . payload . protectConfigLink } ` ;
196- if ( baseURL && event . payload . approvalLink ) approvalLink = `${ baseURL } ${ event . payload . approvalLink } ` ;
197- if ( ! event . payload . envName ) {
198- envName = "Base configuration"
199- }
200- return {
201- eventTime : timestamp ,
202- triggeredBy : event . payload . triggeredBy || "NA" ,
203- appName : event . payload . appName || "NA" ,
204- envName : event . payload . envName || envName ,
205- protectConfigFileType :protectConfigFileType || "NA" ,
206- protectConfigFileName :protectConfigFileName || "NA" ,
207- protectConfigComment :protectConfigComment || [ ] ,
208- protectConfigLink :protectConfigLink ,
209- approvalLink :approvalLink ,
210- }
211- }
218+ // Note: Approval and ConfigApproval events are now handled at the top of this function
212219 else if ( event . eventTypeId === EVENT_TYPE . ImagePromotion ) {
213220
214221 let artifactPromotionRequestViewLink : string = `${ baseURL } ${ event . payload ?. artifactPromotionRequestViewLink } `
0 commit comments