@@ -25,6 +25,7 @@ import { Modules } from "common/modules.js";
2525import { retryDynamoTransactionWithBackoff } from "api/utils.js" ;
2626import { Redis , ValidLoggers } from "api/types.js" ;
2727import { createLock , IoredisAdapter , type SimpleLock } from "redlock-universal" ;
28+ import { batchGetUserInfo } from "./uin.js" ;
2829
2930export interface GetOrgInfoInputs {
3031 id : string ;
@@ -54,7 +55,7 @@ export async function getOrgInfo({
5455 ConsistentRead : true ,
5556 } ) ;
5657 let response = { leads : [ ] } as {
57- leads : { name : string ; username : string ; title : string | undefined } [ ] ;
58+ leads : { name ? : string ; username : string ; title : string | undefined } [ ] ;
5859 } ;
5960 try {
6061 const responseMarshall = await dynamoClient . send ( query ) ;
@@ -98,18 +99,39 @@ export async function getOrgInfo({
9899 . map (
99100 ( x ) =>
100101 ( {
101- name : x . name ,
102102 username : x . username ,
103103 title : x . title ,
104104 nonVotingMember : x . nonVotingMember || false ,
105105 } ) as {
106- name : string ;
107106 username : string ;
108107 title : string | undefined ;
109108 nonVotingMember : boolean ;
110109 } ,
111110 ) ;
112- response = { ...response , leads : unmarshalledLeads } ;
111+
112+ // Resolve usernames to names
113+ const emails = unmarshalledLeads . map ( ( lead ) => lead . username ) ;
114+ const userInfo = await batchGetUserInfo ( {
115+ emails,
116+ dynamoClient,
117+ logger,
118+ } ) ;
119+
120+ // Add names to leads
121+ const leadsWithNames = unmarshalledLeads . map ( ( lead ) => {
122+ const info = userInfo [ lead . username ] ;
123+ const name =
124+ info ?. firstName || info ?. lastName
125+ ? [ info . firstName , info . lastName ] . filter ( Boolean ) . join ( " " )
126+ : undefined ;
127+
128+ return {
129+ ...lead ,
130+ name,
131+ } ;
132+ } ) ;
133+
134+ response = { ...response , leads : leadsWithNames } ;
113135 }
114136 } catch ( e ) {
115137 if ( e instanceof BaseError ) {
0 commit comments