Skip to content

Commit 187d79d

Browse files
committed
fix: add members case-insesitive way
ref issue #148
1 parent 46c69e6 commit 187d79d

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

src/services/TeamService.js

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -384,36 +384,49 @@ async function addMembers (currentUser, id, criteria, data) {
384384
const handles = data.handles || []
385385
const emails = data.emails || []
386386

387-
const membersByHandle = await helper.getMemberDetailsByHandles(handles)
388-
.then(members => {
389-
return _.groupBy(members, 'handle')
390-
})
391-
392-
const membersByEmail = await helper.getMemberDetailsByEmails(emails)
393-
.then(members => {
394-
return _.groupBy(members, 'email')
395-
})
387+
const handleMembers = await helper.getMemberDetailsByHandles(handles)
388+
.then((members) => _.map(members, (member) => ({
389+
...member,
390+
// populate members with lower-cased handle for case insensitive search
391+
handleLowerCase: member.handle.toLowerCase()
392+
})))
393+
394+
const emailMembers = await helper.getMemberDetailsByEmails(emails)
395+
.then((members) => _.map(members, (member) => ({
396+
...member,
397+
// populate members with lower-cased email for case insensitive search
398+
emailLowerCase: member.email.toLowerCase()
399+
})))
396400

397401
await Promise.all([
398402
Promise.all(handles.map(handle => {
399-
if (!membersByHandle[handle]) {
403+
const memberDetails = _.find(handleMembers, { handleLowerCase: handle.toLowerCase() })
404+
405+
if (!memberDetails) {
400406
result.failed.push({ error: 'User doesn\'t exist', handle })
401407
return
402408
}
403-
return _addMemberToProjectAsCustomer(id, membersByHandle[handle][0].userId, criteria.fields)
409+
410+
return _addMemberToProjectAsCustomer(id, memberDetails.userId, criteria.fields)
404411
.then(member => {
412+
// note, that we return `handle` in the same case it was in request
405413
result.success.push(({ ...member, handle }))
406414
}).catch(err => {
407415
result.failed.push({ error: err.message, handle })
408416
})
409417
})),
418+
410419
Promise.all(emails.map(email => {
411-
if (!membersByEmail[email]) {
420+
const memberDetails = _.find(emailMembers, { emailLowerCase: email.toLowerCase() })
421+
422+
if (!memberDetails) {
412423
result.failed.push({ error: 'User doesn\'t exist', email })
413424
return
414425
}
415-
return _addMemberToProjectAsCustomer(id, membersByEmail[email][0].id, criteria.fields)
426+
427+
return _addMemberToProjectAsCustomer(id, memberDetails.id, criteria.fields)
416428
.then(member => {
429+
// note, that we return `email` in the same case it was in request
417430
result.success.push(({ ...member, email }))
418431
}).catch(err => {
419432
result.failed.push({ error: err.message, email })

0 commit comments

Comments
 (0)