aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/emoji_input/suggestor.js8
-rw-r--r--src/modules/users.js20
2 files changed, 20 insertions, 8 deletions
diff --git a/src/components/emoji_input/suggestor.js b/src/components/emoji_input/suggestor.js
index 15a71eff..91d5cfb9 100644
--- a/src/components/emoji_input/suggestor.js
+++ b/src/components/emoji_input/suggestor.js
@@ -1,4 +1,4 @@
-import { debounce } from 'lodash'
+import debounce from 'lodash/debounce'
/**
* suggest - generates a suggestor function to be used by emoji-input
* data: object providing source information for specific types of suggestions:
@@ -13,7 +13,7 @@ import { debounce } from 'lodash'
const debounceUserSearch = debounce((data, input) => {
data.updateUsersList(input)
-}, 500, { leading: true, trailing: false })
+}, 500)
export default data => input => {
const firstChar = input[0]
@@ -97,8 +97,8 @@ export const suggestUsers = data => input => {
replacement: '@' + screen_name + ' '
}))
- // BE search users if there are no matches
- if (newUsers.length === 0 && data.updateUsersList) {
+ // BE search users to get more comprehensive results
+ if (data.updateUsersList) {
debounceUserSearch(data, noPrefix)
}
return newUsers
diff --git a/src/modules/users.js b/src/modules/users.js
index f9329f2a..a640fb3b 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -225,6 +225,12 @@ export const mutations = {
signUpFailure (state, errors) {
state.signUpPending = false
state.signUpErrors = errors
+ },
+ addRecentQuery (state, query) {
+ state.recentQueries = state.recentQueries.concat(query)
+ if (state.recentQueries.length > 10) {
+ state.recentQueries = state.recentQueries.slice(1)
+ }
}
}
@@ -251,7 +257,8 @@ export const defaultState = {
usersObject: {},
signUpPending: false,
signUpErrors: [],
- relationships: {}
+ relationships: {},
+ recentQueries: []
}
const users = {
@@ -428,10 +435,15 @@ const users = {
store.commit('setUserForNotification', notification)
})
},
- searchUsers (store, { query }) {
- return store.rootState.api.backendInteractor.searchUsers({ query })
+ searchUsers ({ rootState, commit }, { query }) {
+ // Don't fetch if this query was already done recently
+ if (rootState.users.recentQueries.includes(query)) {
+ return []
+ }
+ return rootState.api.backendInteractor.searchUsers({ query })
.then((users) => {
- store.commit('addNewUsers', users)
+ commit('addRecentQuery', query)
+ commit('addNewUsers', users)
return users
})
},