diff --git a/website/client/components/groups/chat.vue b/website/client/components/groups/chat.vue index eaad9cf18e..318c0e487e 100644 --- a/website/client/components/groups/chat.vue +++ b/website/client/components/groups/chat.vue @@ -55,7 +55,7 @@ import tierNPC from 'assets/svg/tier-npc.svg'; export default { - props: ['label', 'group', 'placeholder'], + props: ['label', 'group', 'placeholder', 'autocompleteContext'], components: { communityGuidelines, chatMessage, @@ -92,7 +92,7 @@ autocompleteOptions: { values: debounce(async (text, cb) => { if (text.length > 0) { - let suggestions = await axios.get(`/api/v4/members/find/${text}`); + let suggestions = await axios.get(`/api/v4/members/find/${text}?context=${this.autocompleteContext}&id=${this.group._id}`); cb(suggestions.data.data); } else { cb([]); diff --git a/website/client/components/groups/group.vue b/website/client/components/groups/group.vue index 80dc1b054b..d91b3f9207 100644 --- a/website/client/components/groups/group.vue +++ b/website/client/components/groups/group.vue @@ -30,6 +30,7 @@ chat( :label="$t('chat')", :group="group", + :autocompleteContext="autocompleteContext" :placeholder="!isParty ? $t('chatPlaceholder') : $t('partyChatPlaceholder')", @fetchRecentMessages="fetchRecentMessages()" ) @@ -368,6 +369,9 @@ export default { showNoNotificationsMessage () { return this.group.memberCount > this.$store.state.constants.LARGE_GROUP_COUNT_MESSAGE_CUTOFF; }, + autocompleteContext () { + return this.isParty ? 'party' : 'guild'; + }, }, mounted () { if (this.isParty) this.searchId = 'party'; diff --git a/website/client/components/groups/tavern.vue b/website/client/components/groups/tavern.vue index 4cf6a7e6df..56525e087b 100644 --- a/website/client/components/groups/tavern.vue +++ b/website/client/components/groups/tavern.vue @@ -10,6 +10,7 @@ chat( :label="$t('tavernChat')", :group="group", + :autocompleteContext="'tavern'" :placeholder="$t('tavernCommunityGuidelinesPlaceholder')", @fetchRecentMessages="fetchRecentMessages()" ) diff --git a/website/server/controllers/api-v4/members.js b/website/server/controllers/api-v4/members.js index 05c3a0412c..386fdfdfed 100644 --- a/website/server/controllers/api-v4/members.js +++ b/website/server/controllers/api-v4/members.js @@ -22,8 +22,20 @@ api.getUsernameAutocompletes = { return; } + let query = {'auth.local.lowerCaseUsername': {$regex: `^${username}.*`}, 'flags.verifiedUsername': true, 'preferences.searchableUsername': {$ne: false}}; + + let context = req.query.context; + let id = req.query.id; + if (context && id) { + if (context === 'party') { + query['party._id'] = id; + } else if (context === 'guild') { + query.guilds = id; + } + } + let members = await User - .find({'auth.local.lowerCaseUsername': {$regex: `^${username}.*`}, 'flags.verifiedUsername': true, 'preferences.searchableUsername': {$ne: false}}) + .find(query) .select(['profile.name', 'contributor', 'auth.local.username']) .limit(20) .exec();