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 = () => {