@@ -15,17 +15,18 @@ const PHASE_ATTRIBUTES = _.keys(models.ProjectPhase.rawAttributes);
15
15
16
16
const permissions = tcMiddleware . permissions ;
17
17
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' ) ) } ) ) ;
27
29
}
28
- return phases ;
29
30
} ;
30
31
module . exports = [
31
32
permissions ( 'project.view' ) ,
@@ -70,7 +71,7 @@ module.exports = [
70
71
}
71
72
72
73
phases = _ . map ( phases , phase => _ . pick ( phase , fields ) ) ;
73
- return populateMemberDetails ( phases , req . log , req . id )
74
+ return populateMemberDetails ( phases , req )
74
75
. then ( result => res . json ( result ) ) ;
75
76
} )
76
77
. catch ( ( err ) => {
@@ -121,7 +122,7 @@ module.exports = [
121
122
}
122
123
phases = _ . map ( phases , phase => _ . pick ( phase , fields ) ) ;
123
124
// Write to response
124
- return populateMemberDetails ( phases , req . log , req . id )
125
+ return populateMemberDetails ( phases , req )
125
126
. then ( result => res . json ( result ) ) ;
126
127
} ) ;
127
128
}
0 commit comments