summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2016-11-02 14:38:34 -0400
committerGitHub <noreply@github.com>2016-11-02 14:38:34 -0400
commit137ade29d061e158543da814ecd0d06d7e992c1f (patch)
treecb528f2db486f78a4e9fe5a75a693ce6d3968cca /webapp
parentb45cc443c9e9fdf8147d354b95b6fecb31b2e7b2 (diff)
downloadchat-137ade29d061e158543da814ecd0d06d7e992c1f.tar.gz
chat-137ade29d061e158543da814ecd0d06d7e992c1f.tar.bz2
chat-137ade29d061e158543da814ecd0d06d7e992c1f.zip
PLT-4535/PLT-4503 Fix inactive users in searches and add option functionality to DB user search (#4413)
* Add options to user database search * Fix inactive users showing up incorrectly in some user searches * Read JSON for searchUsers API into anonymous struct * Move anonymous struct to be a normal struct in model directory and upadte client to use it * Added clarification comment about slightly odd query condition in search
Diffstat (limited to 'webapp')
-rw-r--r--webapp/components/admin_console/team_users.jsx7
-rw-r--r--webapp/components/channel_invite_modal.jsx2
-rw-r--r--webapp/components/channel_members_modal.jsx2
-rw-r--r--webapp/components/more_direct_channels.jsx6
-rw-r--r--webapp/stores/user_store.jsx6
-rw-r--r--webapp/utils/constants.jsx5
6 files changed, 20 insertions, 8 deletions
diff --git a/webapp/components/admin_console/team_users.jsx b/webapp/components/admin_console/team_users.jsx
index 1d0886737..3efb242ed 100644
--- a/webapp/components/admin_console/team_users.jsx
+++ b/webapp/components/admin_console/team_users.jsx
@@ -13,7 +13,7 @@ import UserStore from 'stores/user_store.jsx';
import {searchUsers, loadProfilesAndTeamMembers, loadTeamMembersForProfilesList} from 'actions/user_actions.jsx';
import {getTeamStats, getUser} from 'utils/async_client.jsx';
-import Constants from 'utils/constants.jsx';
+import {Constants, UserSearchOptions} from 'utils/constants.jsx';
import * as Utils from 'utils/utils.jsx';
import React from 'react';
@@ -145,10 +145,13 @@ export default class UserList extends React.Component {
return;
}
+ const options = {};
+ options[UserSearchOptions.ALLOW_INACTIVE] = true;
+
searchUsers(
term,
this.props.params.team,
- {},
+ options,
(users) => {
this.setState({loading: true, search: true, users});
loadTeamMembersForProfilesList(users, this.props.params.team, this.loadComplete);
diff --git a/webapp/components/channel_invite_modal.jsx b/webapp/components/channel_invite_modal.jsx
index 14e02e04b..7f6ca4d32 100644
--- a/webapp/components/channel_invite_modal.jsx
+++ b/webapp/components/channel_invite_modal.jsx
@@ -105,7 +105,7 @@ export default class ChannelInviteModal extends React.Component {
searchUsers(
term,
TeamStore.getCurrentId(),
- {not_in_channel: this.props.channel.id},
+ {not_in_channel_id: this.props.channel.id},
(users) => {
this.setState({search: true, users});
}
diff --git a/webapp/components/channel_members_modal.jsx b/webapp/components/channel_members_modal.jsx
index 286a2243a..76ce535ad 100644
--- a/webapp/components/channel_members_modal.jsx
+++ b/webapp/components/channel_members_modal.jsx
@@ -117,7 +117,7 @@ export default class ChannelMembersModal extends React.Component {
searchUsers(
term,
TeamStore.getCurrentId(),
- {in_channel: this.props.channel.id},
+ {in_channel_id: this.props.channel.id},
(users) => {
this.setState({search: true, users});
}
diff --git a/webapp/components/more_direct_channels.jsx b/webapp/components/more_direct_channels.jsx
index 52e546cd2..7e57261b6 100644
--- a/webapp/components/more_direct_channels.jsx
+++ b/webapp/components/more_direct_channels.jsx
@@ -37,7 +37,7 @@ export default class MoreDirectChannels extends React.Component {
this.loadComplete = this.loadComplete.bind(this);
this.state = {
- users: UserStore.getProfileListInTeam(TeamStore.getCurrentId(), true),
+ users: UserStore.getProfileListInTeam(TeamStore.getCurrentId(), true, true),
loadingDMChannel: -1,
listType: 'team',
loading: false,
@@ -111,7 +111,7 @@ export default class MoreDirectChannels extends React.Component {
if (this.state.listType === 'any') {
users = UserStore.getProfileList();
} else {
- users = UserStore.getProfileListInTeam(TeamStore.getCurrentId(), true);
+ users = UserStore.getProfileListInTeam(TeamStore.getCurrentId(), true, true);
}
this.setState({
@@ -125,7 +125,7 @@ export default class MoreDirectChannels extends React.Component {
if (listType === 'any') {
users = UserStore.getProfileList();
} else {
- users = UserStore.getProfileListInTeam(TeamStore.getCurrentId(), true);
+ users = UserStore.getProfileListInTeam(TeamStore.getCurrentId(), true, true);
}
this.setState({
diff --git a/webapp/stores/user_store.jsx b/webapp/stores/user_store.jsx
index 9ac8540f9..bb3415a7d 100644
--- a/webapp/stores/user_store.jsx
+++ b/webapp/stores/user_store.jsx
@@ -312,7 +312,7 @@ class UserStoreClass extends EventEmitter {
this.saveProfiles(profiles);
}
- getProfileListInTeam(teamId = TeamStore.getCurrentId(), skipCurrent) {
+ getProfileListInTeam(teamId = TeamStore.getCurrentId(), skipCurrent = false, skipInactive = false) {
const userIds = this.profiles_in_team[teamId] || [];
const profiles = [];
const currentId = this.getCurrentId();
@@ -324,6 +324,10 @@ class UserStoreClass extends EventEmitter {
continue;
}
+ if (skipInactive && profile.delete_at > 0) {
+ continue;
+ }
+
if (profile) {
profiles.push(profile);
}
diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx
index beaca3921..352401142 100644
--- a/webapp/utils/constants.jsx
+++ b/webapp/utils/constants.jsx
@@ -181,6 +181,10 @@ export const UserStatuses = {
ONLINE: 'online'
};
+export const UserSearchOptions = {
+ ALLOW_INACTIVE: 'allow_inactive'
+};
+
export const SocketEvents = {
POSTED: 'posted',
POST_EDITED: 'post_edited',
@@ -214,6 +218,7 @@ export const Constants = {
ActionTypes,
WebrtcActionTypes,
UserStatuses,
+ UserSearchOptions,
TutorialSteps,
PayloadSources: keyMirror({