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
Этот коммит содержится в:
Joram Wilander
2016-11-02 14:38:34 -04:00
коммит произвёл GitHub
родитель b45cc443c9
Коммит 137ade29d0
14 изменённых файлов: 279 добавлений и 83 удалений

Просмотреть файл

@@ -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);

Просмотреть файл

@@ -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});
}

Просмотреть файл

@@ -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});
}

Просмотреть файл

@@ -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({

Просмотреть файл

@@ -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);
}

Просмотреть файл

@@ -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({