Discard outdated results in modal searches (#5082)
Этот коммит содержится в:
коммит произвёл
Corey Hulen
родитель
4257114a37
Коммит
6b2c4a346b
@@ -158,13 +158,17 @@ export default class UserList extends React.Component {
|
|||||||
|
|
||||||
clearTimeout(this.searchTimeoutId);
|
clearTimeout(this.searchTimeoutId);
|
||||||
|
|
||||||
this.searchTimeoutId = setTimeout(
|
const searchTimeoutId = setTimeout(
|
||||||
() => {
|
() => {
|
||||||
searchUsers(
|
searchUsers(
|
||||||
term,
|
term,
|
||||||
this.props.params.team,
|
this.props.params.team,
|
||||||
options,
|
options,
|
||||||
(users) => {
|
(users) => {
|
||||||
|
if (searchTimeoutId !== this.searchTimeoutId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.setState({loading: true, search: true, users});
|
this.setState({loading: true, search: true, users});
|
||||||
loadTeamMembersForProfilesList(users, this.props.params.team, this.loadComplete);
|
loadTeamMembersForProfilesList(users, this.props.params.team, this.loadComplete);
|
||||||
}
|
}
|
||||||
@@ -172,6 +176,8 @@ export default class UserList extends React.Component {
|
|||||||
},
|
},
|
||||||
Constants.SEARCH_TIMEOUT_MILLISECONDS
|
Constants.SEARCH_TIMEOUT_MILLISECONDS
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.searchTimeoutId = searchTimeoutId;
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|||||||
@@ -117,19 +117,25 @@ export default class ChannelInviteModal extends React.Component {
|
|||||||
|
|
||||||
clearTimeout(this.searchTimeoutId);
|
clearTimeout(this.searchTimeoutId);
|
||||||
|
|
||||||
this.searchTimeoutId = setTimeout(
|
const searchTimeoutId = setTimeout(
|
||||||
() => {
|
() => {
|
||||||
searchUsers(
|
searchUsers(
|
||||||
term,
|
term,
|
||||||
TeamStore.getCurrentId(),
|
TeamStore.getCurrentId(),
|
||||||
{not_in_channel_id: this.props.channel.id},
|
{not_in_channel_id: this.props.channel.id},
|
||||||
(users) => {
|
(users) => {
|
||||||
|
if (searchTimeoutId !== this.searchTimeoutId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.setState({search: true, users});
|
this.setState({search: true, users});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
Constants.SEARCH_TIMEOUT_MILLISECONDS
|
Constants.SEARCH_TIMEOUT_MILLISECONDS
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.searchTimeoutId = searchTimeoutId;
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|||||||
@@ -104,13 +104,17 @@ export default class MemberListChannel extends React.Component {
|
|||||||
|
|
||||||
clearTimeout(this.searchTimeoutId);
|
clearTimeout(this.searchTimeoutId);
|
||||||
|
|
||||||
this.searchTimeoutId = setTimeout(
|
const searchTimeoutId = setTimeout(
|
||||||
() => {
|
() => {
|
||||||
searchUsers(
|
searchUsers(
|
||||||
term,
|
term,
|
||||||
TeamStore.getCurrentId(),
|
TeamStore.getCurrentId(),
|
||||||
{},
|
{},
|
||||||
(users) => {
|
(users) => {
|
||||||
|
if (searchTimeoutId !== this.searchTimeoutId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
loading: true,
|
loading: true,
|
||||||
search: true,
|
search: true,
|
||||||
@@ -125,6 +129,8 @@ export default class MemberListChannel extends React.Component {
|
|||||||
},
|
},
|
||||||
Constants.SEARCH_TIMEOUT_MILLISECONDS
|
Constants.SEARCH_TIMEOUT_MILLISECONDS
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.searchTimeoutId = searchTimeoutId;
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ export default class MemberListTeam extends React.Component {
|
|||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
this.onChange = this.onChange.bind(this);
|
this.onChange = this.onChange.bind(this);
|
||||||
|
this.onTeamChange = this.onTeamChange.bind(this);
|
||||||
this.onStatsChange = this.onStatsChange.bind(this);
|
this.onStatsChange = this.onStatsChange.bind(this);
|
||||||
this.search = this.search.bind(this);
|
this.search = this.search.bind(this);
|
||||||
this.loadComplete = this.loadComplete.bind(this);
|
this.loadComplete = this.loadComplete.bind(this);
|
||||||
@@ -44,7 +45,7 @@ export default class MemberListTeam extends React.Component {
|
|||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
UserStore.addInTeamChangeListener(this.onChange);
|
UserStore.addInTeamChangeListener(this.onChange);
|
||||||
UserStore.addStatusesChangeListener(this.onChange);
|
UserStore.addStatusesChangeListener(this.onChange);
|
||||||
TeamStore.addChangeListener(this.onChange.bind(null, true));
|
TeamStore.addChangeListener(this.onTeamChange);
|
||||||
TeamStore.addStatsChangeListener(this.onStatsChange);
|
TeamStore.addStatsChangeListener(this.onStatsChange);
|
||||||
|
|
||||||
loadProfilesAndTeamMembers(0, Constants.PROFILE_CHUNK_SIZE, TeamStore.getCurrentId(), this.loadComplete);
|
loadProfilesAndTeamMembers(0, Constants.PROFILE_CHUNK_SIZE, TeamStore.getCurrentId(), this.loadComplete);
|
||||||
@@ -54,7 +55,7 @@ export default class MemberListTeam extends React.Component {
|
|||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
UserStore.removeInTeamChangeListener(this.onChange);
|
UserStore.removeInTeamChangeListener(this.onChange);
|
||||||
UserStore.removeStatusesChangeListener(this.onChange);
|
UserStore.removeStatusesChangeListener(this.onChange);
|
||||||
TeamStore.removeChangeListener(this.onChange);
|
TeamStore.removeChangeListener(this.onTeamChange);
|
||||||
TeamStore.removeStatsChangeListener(this.onStatsChange);
|
TeamStore.removeStatsChangeListener(this.onStatsChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,6 +63,10 @@ export default class MemberListTeam extends React.Component {
|
|||||||
this.setState({loading: false});
|
this.setState({loading: false});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onTeamChange() {
|
||||||
|
this.onChange(true);
|
||||||
|
}
|
||||||
|
|
||||||
onChange(force) {
|
onChange(force) {
|
||||||
if (this.state.search && !force) {
|
if (this.state.search && !force) {
|
||||||
return;
|
return;
|
||||||
@@ -90,13 +95,16 @@ export default class MemberListTeam extends React.Component {
|
|||||||
|
|
||||||
clearTimeout(this.searchTimeoutId);
|
clearTimeout(this.searchTimeoutId);
|
||||||
|
|
||||||
this.searchTimeoutId = setTimeout(
|
const searchTimeoutId = setTimeout(
|
||||||
() => {
|
() => {
|
||||||
searchUsers(
|
searchUsers(
|
||||||
term,
|
term,
|
||||||
TeamStore.getCurrentId(),
|
TeamStore.getCurrentId(),
|
||||||
{},
|
{},
|
||||||
(users) => {
|
(users) => {
|
||||||
|
if (searchTimeoutId !== this.searchTimeoutId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.setState({loading: true, search: true, users, term, teamMembers: Object.assign([], TeamStore.getMembersInTeam())});
|
this.setState({loading: true, search: true, users, term, teamMembers: Object.assign([], TeamStore.getMembersInTeam())});
|
||||||
loadTeamMembersForProfilesList(users, TeamStore.getCurrentId(), this.loadComplete);
|
loadTeamMembersForProfilesList(users, TeamStore.getCurrentId(), this.loadComplete);
|
||||||
}
|
}
|
||||||
@@ -104,6 +112,8 @@ export default class MemberListTeam extends React.Component {
|
|||||||
},
|
},
|
||||||
Constants.SEARCH_TIMEOUT_MILLISECONDS
|
Constants.SEARCH_TIMEOUT_MILLISECONDS
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.searchTimeoutId = searchTimeoutId;
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|||||||
@@ -107,17 +107,22 @@ export default class MoreChannels extends React.Component {
|
|||||||
|
|
||||||
clearTimeout(this.searchTimeoutId);
|
clearTimeout(this.searchTimeoutId);
|
||||||
|
|
||||||
this.searchTimeoutId = setTimeout(
|
const searchTimeoutId = setTimeout(
|
||||||
() => {
|
() => {
|
||||||
searchMoreChannels(
|
searchMoreChannels(
|
||||||
term,
|
term,
|
||||||
(channels) => {
|
(channels) => {
|
||||||
|
if (searchTimeoutId !== this.searchTimeoutId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.setState({search: true, channels});
|
this.setState({search: true, channels});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
SEARCH_TIMEOUT_MILLISECONDS
|
SEARCH_TIMEOUT_MILLISECONDS
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.searchTimeoutId = searchTimeoutId;
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@@ -196,4 +201,4 @@ export default class MoreChannels extends React.Component {
|
|||||||
MoreChannels.propTypes = {
|
MoreChannels.propTypes = {
|
||||||
onModalDismissed: React.PropTypes.func,
|
onModalDismissed: React.PropTypes.func,
|
||||||
handleNewChannel: React.PropTypes.func
|
handleNewChannel: React.PropTypes.func
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -379,5 +379,7 @@ TeamStore.dispatchToken = AppDispatcher.register((payload) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
TeamStore.setMaxListeners(15);
|
||||||
|
|
||||||
window.TeamStore = TeamStore;
|
window.TeamStore = TeamStore;
|
||||||
export default TeamStore;
|
export default TeamStore;
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user