diff --git a/frontend/src/components/user-select.js b/frontend/src/components/user-select.js index e295b28c96..8b712e0f42 100644 --- a/frontend/src/components/user-select.js +++ b/frontend/src/components/user-select.js @@ -21,8 +21,9 @@ class UserSelect extends React.Component { constructor(props) { super(props); this.options = []; + this.finalValue = ''; this.state = { - searchValue: '', + searchValue: '' }; } @@ -37,36 +38,39 @@ class UserSelect extends React.Component { loadOptions = (input, callback) => { const value = input.trim(); - if (value.length > 0) { - seafileAPI.searchUsers(value).then((res) => { - this.options = []; - for (let i = 0 ; i < res.data.users.length; i++) { - const item = res.data.users[i]; - let obj = {}; - obj.value = item.name; - obj.email = item.email; - obj.label = - enableShowContactEmailWhenSearchUser ? ( -
- -
- {item.name}
- {item.contact_email} -
+ this.finalValue = value; + setTimeout(() => { + if (this.finalValue === value && value.length > 0) { + seafileAPI.searchUsers(value).then((res) => { + this.options = []; + for (let i = 0 ; i < res.data.users.length; i++) { + const item = res.data.users[i]; + let obj = {}; + obj.value = item.name; + obj.email = item.email; + obj.label = enableShowContactEmailWhenSearchUser ? ( +
+ +
+ {item.name}
+ {item.contact_email}
- ) : ( - - - {item.name} - ); - this.options.push(obj); - } - callback(this.options); - }).catch(error => { - let errMessage = Utils.getErrorMsg(error); - toaster.danger(errMessage); - }); - } +
+ ) : ( + + + {item.name} + + ); + this.options.push(obj); + } + callback(this.options); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); + }); + } + }, 1000); } clearSelect = () => {