diff options
author | Joram Wilander <jwawilander@gmail.com> | 2016-11-03 11:23:57 -0400 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2016-11-03 08:23:57 -0700 |
commit | 1b141681ae6a169272003fa83fb83ba245dbafc7 (patch) | |
tree | 29e21a1ee3e579d2179714ac4b8a6c979b8d55dd /webapp/components | |
parent | 0234f793f29a90572d2288b7b22b75cd5ab83648 (diff) | |
download | chat-1b141681ae6a169272003fa83fb83ba245dbafc7.tar.gz chat-1b141681ae6a169272003fa83fb83ba245dbafc7.tar.bz2 chat-1b141681ae6a169272003fa83fb83ba245dbafc7.zip |
Add status listeners back to user list modals (#4428)
Diffstat (limited to 'webapp/components')
-rw-r--r-- | webapp/components/channel_invite_modal.jsx | 21 | ||||
-rw-r--r-- | webapp/components/channel_members_modal.jsx | 26 | ||||
-rw-r--r-- | webapp/components/member_list_team.jsx | 13 |
3 files changed, 47 insertions, 13 deletions
diff --git a/webapp/components/channel_invite_modal.jsx b/webapp/components/channel_invite_modal.jsx index 7f6ca4d32..576a33dc5 100644 --- a/webapp/components/channel_invite_modal.jsx +++ b/webapp/components/channel_invite_modal.jsx @@ -25,6 +25,7 @@ export default class ChannelInviteModal extends React.Component { super(props); this.onChange = this.onChange.bind(this); + this.onStatusChange = this.onStatusChange.bind(this); this.handleInviteError = this.handleInviteError.bind(this); this.nextPage = this.nextPage.bind(this); this.search = this.search.bind(this); @@ -37,7 +38,8 @@ export default class ChannelInviteModal extends React.Component { this.state = { users: [], total: teamStats.member_count - channelStats.member_count, - search: false + search: false, + statusChange: false }; } @@ -46,6 +48,7 @@ export default class ChannelInviteModal extends React.Component { TeamStore.addStatsChangeListener(this.onChange); ChannelStore.addStatsChangeListener(this.onChange); UserStore.addNotInChannelChangeListener(this.onChange); + UserStore.addStatusesChangeListener(this.onStatusChange); this.onChange(); AsyncClient.getProfilesNotInChannel(this.props.channel.id, 0); @@ -54,6 +57,7 @@ export default class ChannelInviteModal extends React.Component { TeamStore.removeStatsChangeListener(this.onChange); ChannelStore.removeStatsChangeListener(this.onChange); UserStore.removeNotInChannelChangeListener(this.onChange); + UserStore.removeStatusesChangeListener(this.onStatusChange); } } @@ -61,10 +65,11 @@ export default class ChannelInviteModal extends React.Component { ChannelStore.removeStatsChangeListener(this.onChange); ChannelStore.removeChangeListener(this.onChange); UserStore.removeNotInChannelChangeListener(this.onChange); + UserStore.removeStatusesChangeListener(this.onStatusChange); } - onChange() { - if (this.state.search) { + onChange(force) { + if (this.state.search && !force) { this.search(this.term); return; } @@ -78,6 +83,13 @@ export default class ChannelInviteModal extends React.Component { }); } + onStatusChange() { + // Initiate a render to pick up on new statuses + this.setState({ + statusChange: !this.state.statusChange + }); + } + handleInviteError(err) { if (err) { this.setState({ @@ -98,7 +110,8 @@ export default class ChannelInviteModal extends React.Component { this.term = term; if (term === '') { - this.setState({users: UserStore.getProfileListNotInChannel(), search: false}); + this.onChange(true); + this.setState({search: false}); return; } diff --git a/webapp/components/channel_members_modal.jsx b/webapp/components/channel_members_modal.jsx index 76ce535ad..75810cf05 100644 --- a/webapp/components/channel_members_modal.jsx +++ b/webapp/components/channel_members_modal.jsx @@ -27,6 +27,7 @@ export default class ChannelMembersModal extends React.Component { super(props); this.onChange = this.onChange.bind(this); + this.onStatusChange = this.onStatusChange.bind(this); this.handleRemove = this.handleRemove.bind(this); this.createRemoveMemberButton = this.createRemoveMemberButton.bind(this); this.search = this.search.bind(this); @@ -40,7 +41,8 @@ export default class ChannelMembersModal extends React.Component { users: [], total: stats.member_count, showInviteModal: false, - search: false + search: false, + statusChange: false }; } @@ -48,17 +50,25 @@ export default class ChannelMembersModal extends React.Component { if (!this.props.show && nextProps.show) { ChannelStore.addStatsChangeListener(this.onChange); UserStore.addInChannelChangeListener(this.onChange); + UserStore.addStatusesChangeListener(this.onStatusChange); this.onChange(); AsyncClient.getProfilesInChannel(this.props.channel.id, 0); } else if (this.props.show && !nextProps.show) { ChannelStore.removeStatsChangeListener(this.onChange); UserStore.removeInChannelChangeListener(this.onChange); + UserStore.removeStatusesChangeListener(this.onStatusChange); } } - onChange() { - if (this.state.search) { + componentWillUnmount() { + ChannelStore.removeStatsChangeListener(this.onChange); + UserStore.removeInChannelChangeListener(this.onChange); + UserStore.removeStatusesChangeListener(this.onStatusChange); + } + + onChange(force) { + if (this.state.search && !force) { this.search(this.term); return; } @@ -70,6 +80,13 @@ export default class ChannelMembersModal extends React.Component { }); } + onStatusChange() { + // Initiate a render to pick up on new statuses + this.setState({ + statusChange: !this.state.statusChange + }); + } + handleRemove(user) { const userId = user.id; @@ -110,7 +127,8 @@ export default class ChannelMembersModal extends React.Component { this.term = term; if (term === '') { - this.setState({users: UserStore.getProfileListInChannel(this.props.channel.id), search: false}); + this.onChange(true); + this.setState({search: false}); return; } diff --git a/webapp/components/member_list_team.jsx b/webapp/components/member_list_team.jsx index e457e48a4..b32ab117d 100644 --- a/webapp/components/member_list_team.jsx +++ b/webapp/components/member_list_team.jsx @@ -38,6 +38,7 @@ export default class MemberListTeam extends React.Component { componentDidMount() { UserStore.addInTeamChangeListener(this.onChange); + UserStore.addStatusesChangeListener(this.onChange); TeamStore.addChangeListener(this.onChange); TeamStore.addStatsChangeListener(this.onStatsChange); @@ -47,6 +48,7 @@ export default class MemberListTeam extends React.Component { componentWillUnmount() { UserStore.removeInTeamChangeListener(this.onChange); + UserStore.removeStatusesChangeListener(this.onChange); TeamStore.removeChangeListener(this.onChange); TeamStore.removeStatsChangeListener(this.onStatsChange); } @@ -55,12 +57,12 @@ export default class MemberListTeam extends React.Component { this.setState({loading: false}); } - onChange() { - if (!this.state.search) { - this.setState({users: UserStore.getProfileListInTeam()}); + onChange(force) { + if (this.state.search && !force) { + return; } - this.setState({teamMembers: Object.assign([], TeamStore.getMembersInTeam())}); + this.setState({users: UserStore.getProfileListInTeam(), teamMembers: Object.assign([], TeamStore.getMembersInTeam())}); } onStatsChange() { @@ -74,7 +76,8 @@ export default class MemberListTeam extends React.Component { search(term) { if (term === '') { - this.setState({search: false, users: UserStore.getProfileListInTeam()}); + this.onChange(true); + this.setState({search: false}); return; } |