diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-04-25 11:46:02 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2017-04-25 11:46:02 -0400 |
commit | 6c4c706313eb765eb00c639f381646be74f27b69 (patch) | |
tree | 6068feaa9668dcd74601730ac1a5abfb366402b1 /webapp/components/member_list_channel.jsx | |
parent | cc07c005074348de87854f1c953a549e8772fa03 (diff) | |
download | chat-6c4c706313eb765eb00c639f381646be74f27b69.tar.gz chat-6c4c706313eb765eb00c639f381646be74f27b69.tar.bz2 chat-6c4c706313eb765eb00c639f381646be74f27b69.zip |
Start moving webapp to Redux (#6140)
* Start moving webapp to Redux
* Fix localforage import
* Updates per feedback
* Feedback udpates and a few fixes
* Minor updates
* Fix statuses, config not loading properly, getMe sanitizing too much
* Fix preferences
* Fix user autocomplete
* Fix sessions and audits
* Fix error handling for all redux actions
* Use new directory structure for components and containers
* Refresh immediately on logout instead of after timeout
* Add fetch polyfill
Diffstat (limited to 'webapp/components/member_list_channel.jsx')
-rw-r--r-- | webapp/components/member_list_channel.jsx | 47 |
1 files changed, 18 insertions, 29 deletions
diff --git a/webapp/components/member_list_channel.jsx b/webapp/components/member_list_channel.jsx index e9eef9fb8..df000c132 100644 --- a/webapp/components/member_list_channel.jsx +++ b/webapp/components/member_list_channel.jsx @@ -17,6 +17,9 @@ import * as UserAgent from 'utils/user_agent.jsx'; import React from 'react'; +import store from 'stores/redux_store.jsx'; +import {searchProfilesInCurrentChannel} from 'mattermost-redux/selectors/entities/users'; + const USERS_PER_PAGE = 50; export default class MemberListChannel extends React.Component { @@ -29,6 +32,7 @@ export default class MemberListChannel extends React.Component { this.loadComplete = this.loadComplete.bind(this); this.searchTimeoutId = 0; + this.term = ''; const stats = ChannelStore.getCurrentStats(); @@ -37,8 +41,6 @@ export default class MemberListChannel extends React.Component { teamMembers: Object.assign({}, TeamStore.getMembersInTeam()), channelMembers: Object.assign({}, ChannelStore.getMembersInChannel()), total: stats.member_count, - search: false, - term: '', loading: true }; } @@ -66,16 +68,16 @@ export default class MemberListChannel extends React.Component { this.setState({loading: false}); } - onChange(force) { - if (this.state.search && !force) { - return; - } else if (this.state.search) { - this.search(this.state.term); - return; + onChange() { + let users; + if (this.term) { + users = searchProfilesInCurrentChannel(store.getState(), this.term); + } else { + users = UserStore.getProfileListInChannel(); } this.setState({ - users: UserStore.getProfileListInChannel(), + users, teamMembers: Object.assign({}, TeamStore.getMembersInTeam()), channelMembers: Object.assign({}, ChannelStore.getMembersInChannel()) }); @@ -87,43 +89,30 @@ export default class MemberListChannel extends React.Component { } nextPage(page) { - loadProfilesAndTeamMembersAndChannelMembers((page + 1) * USERS_PER_PAGE, USERS_PER_PAGE); + loadProfilesAndTeamMembersAndChannelMembers(page + 1, USERS_PER_PAGE); } search(term) { clearTimeout(this.searchTimeoutId); + this.term = term; if (term === '') { - this.setState({ - search: false, - term, - users: UserStore.getProfileListInChannel(), - teamMembers: Object.assign([], TeamStore.getMembersInTeam()), - channelMembers: Object.assign([], ChannelStore.getMembersInChannel()) - }); + this.setState({loading: false}); this.searchTimeoutId = ''; + this.onChange(); return; } const searchTimeoutId = setTimeout( () => { - searchUsers( - term, - TeamStore.getCurrentId(), - {}, + searchUsers(term, TeamStore.getCurrentId(), {}, (users) => { if (searchTimeoutId !== this.searchTimeoutId) { return; } - this.setState({ - loading: true, - search: true, - users, - term, - teamMembers: Object.assign([], TeamStore.getMembersInTeam()), - channelMembers: Object.assign([], ChannelStore.getMembersInChannel()) - }); + this.setState({loading: true}); + loadTeamMembersAndChannelMembersForProfilesList(users, TeamStore.getCurrentId(), ChannelStore.getCurrentId(), this.loadComplete); } ); |