diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-01-16 18:32:51 -0500 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2017-01-16 18:32:51 -0500 |
commit | 6b2c4a346ba9c50d533eadb2c64086d67d32c565 (patch) | |
tree | 2e4e7e17336419c4e464e08a7b365178ff4dab12 /webapp/components/member_list_team.jsx | |
parent | 4257114a372fbe2d55178ecef303e4a251288015 (diff) | |
download | chat-6b2c4a346ba9c50d533eadb2c64086d67d32c565.tar.gz chat-6b2c4a346ba9c50d533eadb2c64086d67d32c565.tar.bz2 chat-6b2c4a346ba9c50d533eadb2c64086d67d32c565.zip |
Discard outdated results in modal searches (#5082)
Diffstat (limited to 'webapp/components/member_list_team.jsx')
-rw-r--r-- | webapp/components/member_list_team.jsx | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/webapp/components/member_list_team.jsx b/webapp/components/member_list_team.jsx index a9db0e734..df17d7df2 100644 --- a/webapp/components/member_list_team.jsx +++ b/webapp/components/member_list_team.jsx @@ -23,6 +23,7 @@ export default class MemberListTeam extends React.Component { super(props); this.onChange = this.onChange.bind(this); + this.onTeamChange = this.onTeamChange.bind(this); this.onStatsChange = this.onStatsChange.bind(this); this.search = this.search.bind(this); this.loadComplete = this.loadComplete.bind(this); @@ -44,7 +45,7 @@ export default class MemberListTeam extends React.Component { componentDidMount() { UserStore.addInTeamChangeListener(this.onChange); UserStore.addStatusesChangeListener(this.onChange); - TeamStore.addChangeListener(this.onChange.bind(null, true)); + TeamStore.addChangeListener(this.onTeamChange); TeamStore.addStatsChangeListener(this.onStatsChange); loadProfilesAndTeamMembers(0, Constants.PROFILE_CHUNK_SIZE, TeamStore.getCurrentId(), this.loadComplete); @@ -54,7 +55,7 @@ export default class MemberListTeam extends React.Component { componentWillUnmount() { UserStore.removeInTeamChangeListener(this.onChange); UserStore.removeStatusesChangeListener(this.onChange); - TeamStore.removeChangeListener(this.onChange); + TeamStore.removeChangeListener(this.onTeamChange); TeamStore.removeStatsChangeListener(this.onStatsChange); } @@ -62,6 +63,10 @@ export default class MemberListTeam extends React.Component { this.setState({loading: false}); } + onTeamChange() { + this.onChange(true); + } + onChange(force) { if (this.state.search && !force) { return; @@ -90,13 +95,16 @@ export default class MemberListTeam extends React.Component { clearTimeout(this.searchTimeoutId); - this.searchTimeoutId = setTimeout( + const searchTimeoutId = setTimeout( () => { searchUsers( term, TeamStore.getCurrentId(), {}, (users) => { + if (searchTimeoutId !== this.searchTimeoutId) { + return; + } this.setState({loading: true, search: true, users, term, teamMembers: Object.assign([], TeamStore.getMembersInTeam())}); loadTeamMembersForProfilesList(users, TeamStore.getCurrentId(), this.loadComplete); } @@ -104,6 +112,8 @@ export default class MemberListTeam extends React.Component { }, Constants.SEARCH_TIMEOUT_MILLISECONDS ); + + this.searchTimeoutId = searchTimeoutId; } render() { |