summaryrefslogtreecommitdiffstats
path: root/webapp/components/suggestion/at_mention_provider.jsx
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2016-09-08 08:48:53 -0400
committerenahum <nahumhbl@gmail.com>2016-09-08 09:48:53 -0300
commit47f92441aced1e2dd6e85fc18f27330d88e07593 (patch)
treeea27dad1f5f95f8f5b24f2398ee93d65fbc4160e /webapp/components/suggestion/at_mention_provider.jsx
parent3bc0e833f75e043728c758fbfbe9194d2d19d6c8 (diff)
downloadchat-47f92441aced1e2dd6e85fc18f27330d88e07593.tar.gz
chat-47f92441aced1e2dd6e85fc18f27330d88e07593.tar.bz2
chat-47f92441aced1e2dd6e85fc18f27330d88e07593.zip
PLT-4100 Made SuggestionList dividers optional (#3990)
* Made SuggestionList dividers optional * Stopped mutating the User object in the AtMentionProvider
Diffstat (limited to 'webapp/components/suggestion/at_mention_provider.jsx')
-rw-r--r--webapp/components/suggestion/at_mention_provider.jsx21
1 files changed, 6 insertions, 15 deletions
diff --git a/webapp/components/suggestion/at_mention_provider.jsx b/webapp/components/suggestion/at_mention_provider.jsx
index 87cdc6894..248e459b5 100644
--- a/webapp/components/suggestion/at_mention_provider.jsx
+++ b/webapp/components/suggestion/at_mention_provider.jsx
@@ -99,7 +99,7 @@ class AtMentionSuggestion extends Suggestion {
}
}
-function filterUsersByPrefix(users, prefix, limit) {
+function filterUsersByPrefix(users, prefix, limit, type) {
const filtered = [];
for (const id of Object.keys(users)) {
@@ -117,7 +117,8 @@ function filterUsersByPrefix(users, prefix, limit) {
(user.first_name && user.first_name.toLowerCase().startsWith(prefix)) ||
(user.last_name && user.last_name.toLowerCase().startsWith(prefix)) ||
(user.nickname && user.nickname.toLowerCase().startsWith(prefix))) {
- filtered.push(user);
+ // create a new object here since we're mutating it by adding the type field
+ filtered.push(Object.assign({}, user, {type}));
}
}
@@ -145,15 +146,15 @@ export default class AtMentionProvider {
// Filter users by prefix.
const filteredMembers = filterUsersByPrefix(
- channelMembers, prefix, MaxUserSuggestions);
+ channelMembers, prefix, MaxUserSuggestions, Constants.MENTION_MEMBERS);
const filteredNonmembers = filterUsersByPrefix(
- channelNonmembers, prefix, MaxUserSuggestions - filteredMembers.length);
+ channelNonmembers, prefix, MaxUserSuggestions - filteredMembers.length, Constants.MENTION_NONMEMBERS);
let filteredSpecialMentions = [];
if (!pretext.startsWith('/msg')) {
filteredSpecialMentions = ['here', 'channel', 'all'].filter((item) => {
return item.startsWith(prefix);
}).map((name) => {
- return {username: name};
+ return {username: name, type: Constants.MENTION_SPECIAL};
});
}
@@ -173,16 +174,6 @@ export default class AtMentionProvider {
});
});
- filteredMembers.forEach((item) => {
- item.type = Constants.MENTION_MEMBERS;
- });
- filteredNonmembers.forEach((item) => {
- item.type = Constants.MENTION_NONMEMBERS;
- });
- filteredSpecialMentions.forEach((item) => {
- item.type = Constants.MENTION_SPECIAL;
- });
-
const filtered = filteredMembers.concat(filteredSpecialMentions).concat(filteredNonmembers);
const mentions = filtered.map((user) => '@' + user.username);