Skip to content

Commit b1a7346

Browse files
committed
fix: improve stability of populating member/invite details
- properly ignore invites which don't have userId - don't fail populating details for all the members if just for some members we fail to load traits. Just log error and debug information in such case - don't set 'null' for photoURL if we didn't get it, so we keep the exact falsy value we got from the server
1 parent 5611565 commit b1a7346

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/util.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -523,24 +523,30 @@ _.assignIn(util, {
523523

524524
let allMemberDetails = [];
525525
if (_.intersection(fields, _.union(memberDetailFields, memberTraitFields)).length > 0) {
526-
const userIds = _.remove(_.map(members, 'userId'), _.isNil); // some invites may have no `userId`
526+
const userIds = _.reject(_.map(members, 'userId'), _.isNil); // some invites may have no `userId`
527527
allMemberDetails = await util.getMemberDetailsByUserIds(userIds, req.log, req.id);
528528

529529
if (_.intersection(fields, memberTraitFields).length > 0) {
530530
const promises = _.map(
531531
allMemberDetails,
532-
member => util.getMemberTraitsByHandle(member.handle, req.log, req.id),
532+
member => util.getMemberTraitsByHandle(member.handle, req.log, req.id).catch((err) => {
533+
req.log.error(`Cannot get traits for user (userId:${member.userId}, handle: ${member.handle}).`);
534+
req.log.debug(`Error getting traits for user (userId:${member.userId}, handle: ${member.handle}).`, err);
535+
}),
533536
);
534537
const traits = await Promise.all(promises);
535538
_.each(traits, (memberTraits) => {
539+
// if we didn't manage to get traits for the user, skip it
540+
if (!memberTraits) return;
541+
536542
const basicInfo = _.find(memberTraits, trait => trait.traitId === 'basic_info');
537543
const connectInfo = _.find(memberTraits, trait => trait.traitId === 'connect_info');
538544
const memberIndex = _.findIndex(
539545
allMemberDetails,
540546
member => member.userId === _.get(basicInfo, 'traits.data[0].userId'),
541547
);
542548
const basicDetails = {
543-
photoURL: _.get(basicInfo, 'traits.data[0].photoURL', null),
549+
photoURL: _.get(basicInfo, 'traits.data[0].photoURL'),
544550
};
545551
const connectDetails = _.pick(
546552
_.get(connectInfo, 'traits.data.0'),

0 commit comments

Comments
 (0)