@@ -37,15 +37,15 @@ function teamDeepLink(request, env) {
3737 return `https://teams.microsoft.com/l/team/${ encodeURIComponent ( channelId ) } /conversations?groupId=${ encodeURIComponent ( groupId ) } &tenantId=${ encodeURIComponent ( tenantId ) } ` ;
3838}
3939
40- function cardBodyBlocks ( request , env ) {
40+ function cardBodyBlocks ( request , env , { displayName } = { } ) {
4141 const requester = request . requester_email ?? request . requester_name ?? 'Someone' ;
4242 const teamLink = teamDeepLink ( request , env ) ;
4343 const teamDisplay = teamLink
4444 ? `<${ teamLink } |${ request . team_name } >`
4545 : request . team_name ;
46- // Blockquote lines (>) render as gray vertical bars in Slack
4746 const intro = `${ requester } requested to invite one person to Adobe Enterprise Support` ;
48- const fields = `> *Email*: ${ request . member_email } \n> *Team*: ${ teamDisplay } ` ;
47+ const emailDisplay = displayName ? `${ request . member_email } (${ displayName } )` : request . member_email ;
48+ const fields = `> *Email*: ${ emailDisplay } \n> *Team*: ${ teamDisplay } ` ;
4949 return [
5050 {
5151 type : 'section' ,
@@ -58,10 +58,10 @@ function cardBodyBlocks(request, env) {
5858 ] ;
5959}
6060
61- /** Blocks for the card with a "Processing… " line instead of buttons (spinner state). */
62- function spinnerBlocks ( request , env ) {
61+ /** Blocks for the card with a "Processing... " line instead of buttons (spinner state). */
62+ function spinnerBlocks ( request , env , opts ) {
6363 return [
64- ...cardBodyBlocks ( request , env ) ,
64+ ...cardBodyBlocks ( request , env , opts ) ,
6565 { type : 'section' , text : { type : 'mrkdwn' , text : ':hourglass_flowing_sand: Processing…' } } ,
6666 ] ;
6767}
@@ -73,12 +73,20 @@ export async function postApprovalCard(env, request) {
7373 if ( ! channel ) {
7474 throw new Error ( 'SLACK_ADMIN_CHANNEL_ID is not set. Set it in wrangler.toml [vars] or in the Cloudflare dashboard so it is not removed on deploy.' ) ;
7575 }
76+ let displayName ;
77+ if ( request . member_email . toLowerCase ( ) . endsWith ( '@adobe.com' ) ) {
78+ try {
79+ const user = await resolveUser ( env , request . member_email ) ;
80+ displayName = user ?. displayName ;
81+ } catch { /* not in tenant yet */ }
82+ }
83+ const opts = { displayName } ;
7684 const requester = request . requester_email ?? request . requester_name ?? 'Someone' ;
7785 const result = await slack ( env , 'chat.postMessage' , {
7886 channel,
7987 text : `${ requester } requested to invite ${ request . member_email } to ${ request . team_name } ` ,
8088 blocks : [
81- ...cardBodyBlocks ( request , env ) ,
89+ ...cardBodyBlocks ( request , env , opts ) ,
8290 {
8391 type : 'actions' ,
8492 block_id : 'approval_actions' ,
@@ -240,6 +248,7 @@ async function handleApprove(payload, action, env) {
240248 }
241249
242250 const reviewerName = payload . user . name ?? payload . user . username ?? payload . user . id ;
251+ let resolvedDisplayName ;
243252
244253 // Adobe emails: skip the display-name modal if the user already exists in the tenant.
245254 if ( request . member_email . toLowerCase ( ) . endsWith ( '@adobe.com' ) ) {
@@ -253,6 +262,7 @@ async function handleApprove(payload, action, env) {
253262 await openApproveDisplayNameModal ( payload , request , env ) ;
254263 return ;
255264 }
265+ resolvedDisplayName = existingUser . displayName ;
256266 // User exists — show spinner and fall through to normal approval
257267 const channelId = payload . channel ?. id ?? env . SLACK_ADMIN_CHANNEL_ID ;
258268 const messageTs = payload . message ?. ts ?? request . slack_message_ts ;
@@ -262,7 +272,7 @@ async function handleApprove(payload, action, env) {
262272 channel : channelId ,
263273 ts : messageTs ,
264274 text : `${ request . requester_email ?? request . requester_name } requested to invite ${ request . member_email } to ${ request . team_name } \nProcessing…` ,
265- blocks : spinnerBlocks ( request , env ) ,
275+ blocks : spinnerBlocks ( request , env , { displayName : resolvedDisplayName } ) ,
266276 } ) ;
267277 } catch ( e ) {
268278 console . error ( 'Spinner update failed:' , e ) ;
@@ -293,7 +303,7 @@ async function handleApprove(payload, action, env) {
293303 ts : messageTs ,
294304 text : `${ request . requester_email ?? request . requester_name } requested to invite ${ request . member_email } to ${ request . team_name } \n${ approveText } ` ,
295305 blocks : [
296- ...cardBodyBlocks ( request , env ) ,
306+ ...cardBodyBlocks ( request , env , { displayName : resolvedDisplayName } ) ,
297307 { type : 'section' , text : { type : 'mrkdwn' , text : approveText } } ,
298308 ] ,
299309 } ) ;
@@ -343,7 +353,7 @@ async function handleApprove(payload, action, env) {
343353 ts : messageTs ,
344354 text : fallbackText ,
345355 blocks : [
346- ...cardBodyBlocks ( request , env ) ,
356+ ...cardBodyBlocks ( request , env , { displayName : resolvedDisplayName } ) ,
347357 { type : 'section' , text : { type : 'mrkdwn' , text : errorCardText } } ,
348358 ] ,
349359 } ) ;
@@ -600,7 +610,7 @@ async function handleApproveDisplayNameSubmission(payload, env, displayName) {
600610 channel,
601611 ts,
602612 text : `${ request . requester_email ?? request . requester_name } requested to invite ${ request . member_email } to ${ request . team_name } \nProcessing…` ,
603- blocks : spinnerBlocks ( request , env ) ,
613+ blocks : spinnerBlocks ( request , env , { displayName } ) ,
604614 } ) ;
605615 } catch ( e ) {
606616 console . error ( 'Approve display name spinner update failed:' , e ) ;
@@ -626,7 +636,7 @@ async function handleApproveDisplayNameSubmission(payload, env, displayName) {
626636 ts,
627637 text : `${ request . requester_email ?? request . requester_name } requested to invite ${ request . member_email } to ${ request . team_name } \n${ approveText } ` ,
628638 blocks : [
629- ...cardBodyBlocks ( request , env ) ,
639+ ...cardBodyBlocks ( request , env , { displayName } ) ,
630640 { type : 'section' , text : { type : 'mrkdwn' , text : approveText } } ,
631641 ] ,
632642 } ) ;
@@ -652,7 +662,7 @@ async function handleApproveDisplayNameSubmission(payload, env, displayName) {
652662 ts,
653663 text : `${ request . requester_email ?? request . requester_name } requested to invite ${ request . member_email } to ${ request . team_name } \n${ errorCardText } ` ,
654664 blocks : [
655- ...cardBodyBlocks ( request , env ) ,
665+ ...cardBodyBlocks ( request , env , { displayName } ) ,
656666 { type : 'section' , text : { type : 'mrkdwn' , text : errorCardText } } ,
657667 ] ,
658668 } ) ;
0 commit comments