@@ -15,17 +15,18 @@ const PHASE_ATTRIBUTES = _.keys(models.ProjectPhase.rawAttributes);
1515
1616const permissions = tcMiddleware . permissions ;
1717
18- const populateMemberDetails = async ( phases , logger , id ) => {
19- const userIds = _ . reduce ( phases , ( acc , phase ) => _ . concat ( acc , _ . map ( phase . members , 'userId' ) ) , [ ] ) ;
20- if ( userIds . length > 0 ) {
21- const details = await util . getMemberDetailsByUserIds ( userIds , logger , id ) ;
22- _ . forEach ( phases , ( phase ) => {
23- _ . forEach ( phase . members , ( member ) => {
24- _ . assign ( member , _ . find ( details , detail => detail . userId === member . userId ) ) ;
25- } ) ;
26- } ) ;
18+ const populateMemberDetails = async ( phases , req ) => {
19+ let members = _ . reduce ( phases , ( acc , phase ) =>
20+ _ . concat ( acc , _ . map ( phase . members , member => _ . pick ( member , 'userId' ) ) ) , [ ] ) ;
21+ members = _ . uniqBy ( members , 'userId' ) ;
22+ try {
23+ const detailedMembers = await util . getObjectsWithMemberDetails ( members , [ 'userId' , 'handle' , 'photoURL' ] , req ) ;
24+ return _ . map ( phases , phase =>
25+ _ . assign ( phase , { members : _ . intersectionBy ( detailedMembers , phase . members , 'userId' ) } ) ) ;
26+ } catch ( err ) {
27+ return _ . map ( phases , phase =>
28+ _ . assign ( phase , { members : _ . map ( phase . members , member => _ . pick ( member , 'userId' ) ) } ) ) ;
2729 }
28- return phases ;
2930} ;
3031module . exports = [
3132 permissions ( 'project.view' ) ,
@@ -70,7 +71,7 @@ module.exports = [
7071 }
7172
7273 phases = _ . map ( phases , phase => _ . pick ( phase , fields ) ) ;
73- return populateMemberDetails ( phases , req . log , req . id )
74+ return populateMemberDetails ( phases , req )
7475 . then ( result => res . json ( result ) ) ;
7576 } )
7677 . catch ( ( err ) => {
@@ -121,7 +122,7 @@ module.exports = [
121122 }
122123 phases = _ . map ( phases , phase => _ . pick ( phase , fields ) ) ;
123124 // Write to response
124- return populateMemberDetails ( phases , req . log , req . id )
125+ return populateMemberDetails ( phases , req )
125126 . then ( result => res . json ( result ) ) ;
126127 } ) ;
127128 }
0 commit comments