summaryrefslogtreecommitdiffstats
path: root/webapp/components/admin_console/system_users/system_users.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/admin_console/system_users/system_users.jsx')
-rw-r--r--webapp/components/admin_console/system_users/system_users.jsx87
1 files changed, 26 insertions, 61 deletions
diff --git a/webapp/components/admin_console/system_users/system_users.jsx b/webapp/components/admin_console/system_users/system_users.jsx
index 0b967dead..7bc4b81ed 100644
--- a/webapp/components/admin_console/system_users/system_users.jsx
+++ b/webapp/components/admin_console/system_users/system_users.jsx
@@ -23,6 +23,9 @@ import * as Utils from 'utils/utils.jsx';
import SystemUsersList from './system_users_list.jsx';
+import store from 'stores/redux_store.jsx';
+import {searchProfiles, searchProfilesInTeam} from 'mattermost-redux/selectors/entities/users';
+
const ALL_USERS = '';
const NO_TEAM = 'no_team';
@@ -120,25 +123,18 @@ export default class SystemUsers extends React.Component {
updateUsersFromStore(teamId = this.state.teamId, term = this.state.term) {
if (term) {
- if (teamId === this.state.teamId) {
- // Search results aren't in the store, so manually update the users in them
- const users = [...this.state.users];
-
- for (let i = 0; i < users.length; i++) {
- const user = users[i];
-
- if (UserStore.hasProfile(user.id)) {
- users[i] = UserStore.getProfile(user.id);
- }
- }
-
- this.setState({
- users
- });
+ let users;
+ if (teamId) {
+ users = searchProfilesInTeam(store.getState(), teamId, term);
} else {
- this.doSearch(teamId, term, true);
+ users = searchProfiles(store.getState(), term);
}
+ if (users.length === 0 && UserStore.hasProfile(term)) {
+ users = [UserStore.getProfile(term)];
+ }
+
+ this.setState({users});
return;
}
@@ -179,11 +175,11 @@ export default class SystemUsers extends React.Component {
// Paging isn't supported while searching
if (this.state.teamId === ALL_USERS) {
- loadProfiles((page + 1) * USERS_PER_PAGE, USERS_PER_PAGE, this.loadComplete);
+ loadProfiles(page, USERS_PER_PAGE, this.loadComplete);
} else if (this.state.teamId === NO_TEAM) {
loadProfilesWithoutTeam(page + 1, USERS_PER_PAGE, this.loadComplete);
} else {
- loadProfilesAndTeamMembers((page + 1) * USERS_PER_PAGE, USERS_PER_PAGE, this.state.teamId, this.loadComplete);
+ loadProfilesAndTeamMembers(page + 1, USERS_PER_PAGE, this.state.teamId, this.loadComplete);
}
}
@@ -204,11 +200,9 @@ export default class SystemUsers extends React.Component {
doSearch(teamId, term, now = false) {
clearTimeout(this.searchTimeoutId);
+ this.term = term;
- this.setState({
- loading: true,
- users: []
- });
+ this.setState({loading: true});
const options = {
[UserSearchOptions.ALLOW_INACTIVE]: true
@@ -217,74 +211,45 @@ export default class SystemUsers extends React.Component {
options[UserSearchOptions.WITHOUT_TEAM] = true;
}
- const searchTimeoutId = setTimeout(
+ this.searchTimeoutId = setTimeout(
() => {
searchUsers(
term,
teamId,
options,
(users) => {
- if (searchTimeoutId !== this.searchTimeoutId) {
- return;
- }
-
- if (users.length > 0) {
- this.setState({
- loading: false,
- users
- });
- } else if (term.length === USER_ID_LENGTH) {
+ if (users.length === 0 && term.length === USER_ID_LENGTH) {
// This term didn't match any users name, but it does look like it might be a user's ID
- this.getUserById(term, searchTimeoutId);
+ this.getUserById(term);
} else {
- this.setState({
- loading: false
- });
+ this.setState({loading: false});
}
},
() => {
- this.setState({
- loading: false
- });
+ this.setState({loading: false});
}
);
},
now ? 0 : Constants.SEARCH_TIMEOUT_MILLISECONDS
);
-
- this.searchTimeoutId = searchTimeoutId;
}
- getUserById(id, searchTimeoutId) {
+ getUserById(id) {
if (UserStore.hasProfile(id)) {
- this.setState({
- loading: false,
- users: [UserStore.getProfile(id)]
- });
-
+ this.setState({loading: false});
return;
}
getUser(
id,
- (user) => {
- if (searchTimeoutId !== this.searchTimeoutId) {
- return;
- }
-
+ () => {
this.setState({
- loading: false,
- users: [user]
+ loading: false
});
},
() => {
- if (searchTimeoutId !== this.searchTimeoutId) {
- return;
- }
-
this.setState({
- loading: false,
- users: []
+ loading: false
});
}
);