Add status listeners back to user list modals (#4428)

Этот коммит содержится в:
Joram Wilander
2016-11-03 11:23:57 -04:00
коммит произвёл Corey Hulen
родитель 0234f793f2
Коммит 1b141681ae
3 изменённых файлов: 47 добавлений и 13 удалений

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

@@ -25,6 +25,7 @@ export default class ChannelInviteModal extends React.Component {
super(props); super(props);
this.onChange = this.onChange.bind(this); this.onChange = this.onChange.bind(this);
this.onStatusChange = this.onStatusChange.bind(this);
this.handleInviteError = this.handleInviteError.bind(this); this.handleInviteError = this.handleInviteError.bind(this);
this.nextPage = this.nextPage.bind(this); this.nextPage = this.nextPage.bind(this);
this.search = this.search.bind(this); this.search = this.search.bind(this);
@@ -37,7 +38,8 @@ export default class ChannelInviteModal extends React.Component {
this.state = { this.state = {
users: [], users: [],
total: teamStats.member_count - channelStats.member_count, 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); TeamStore.addStatsChangeListener(this.onChange);
ChannelStore.addStatsChangeListener(this.onChange); ChannelStore.addStatsChangeListener(this.onChange);
UserStore.addNotInChannelChangeListener(this.onChange); UserStore.addNotInChannelChangeListener(this.onChange);
UserStore.addStatusesChangeListener(this.onStatusChange);
this.onChange(); this.onChange();
AsyncClient.getProfilesNotInChannel(this.props.channel.id, 0); AsyncClient.getProfilesNotInChannel(this.props.channel.id, 0);
@@ -54,6 +57,7 @@ export default class ChannelInviteModal extends React.Component {
TeamStore.removeStatsChangeListener(this.onChange); TeamStore.removeStatsChangeListener(this.onChange);
ChannelStore.removeStatsChangeListener(this.onChange); ChannelStore.removeStatsChangeListener(this.onChange);
UserStore.removeNotInChannelChangeListener(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.removeStatsChangeListener(this.onChange);
ChannelStore.removeChangeListener(this.onChange); ChannelStore.removeChangeListener(this.onChange);
UserStore.removeNotInChannelChangeListener(this.onChange); UserStore.removeNotInChannelChangeListener(this.onChange);
UserStore.removeStatusesChangeListener(this.onStatusChange);
} }
onChange() { onChange(force) {
if (this.state.search) { if (this.state.search && !force) {
this.search(this.term); this.search(this.term);
return; 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) { handleInviteError(err) {
if (err) { if (err) {
this.setState({ this.setState({
@@ -98,7 +110,8 @@ export default class ChannelInviteModal extends React.Component {
this.term = term; this.term = term;
if (term === '') { if (term === '') {
this.setState({users: UserStore.getProfileListNotInChannel(), search: false}); this.onChange(true);
this.setState({search: false});
return; return;
} }

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

@@ -27,6 +27,7 @@ export default class ChannelMembersModal extends React.Component {
super(props); super(props);
this.onChange = this.onChange.bind(this); this.onChange = this.onChange.bind(this);
this.onStatusChange = this.onStatusChange.bind(this);
this.handleRemove = this.handleRemove.bind(this); this.handleRemove = this.handleRemove.bind(this);
this.createRemoveMemberButton = this.createRemoveMemberButton.bind(this); this.createRemoveMemberButton = this.createRemoveMemberButton.bind(this);
this.search = this.search.bind(this); this.search = this.search.bind(this);
@@ -40,7 +41,8 @@ export default class ChannelMembersModal extends React.Component {
users: [], users: [],
total: stats.member_count, total: stats.member_count,
showInviteModal: false, 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) { if (!this.props.show && nextProps.show) {
ChannelStore.addStatsChangeListener(this.onChange); ChannelStore.addStatsChangeListener(this.onChange);
UserStore.addInChannelChangeListener(this.onChange); UserStore.addInChannelChangeListener(this.onChange);
UserStore.addStatusesChangeListener(this.onStatusChange);
this.onChange(); this.onChange();
AsyncClient.getProfilesInChannel(this.props.channel.id, 0); AsyncClient.getProfilesInChannel(this.props.channel.id, 0);
} else if (this.props.show && !nextProps.show) { } else if (this.props.show && !nextProps.show) {
ChannelStore.removeStatsChangeListener(this.onChange); ChannelStore.removeStatsChangeListener(this.onChange);
UserStore.removeInChannelChangeListener(this.onChange); UserStore.removeInChannelChangeListener(this.onChange);
UserStore.removeStatusesChangeListener(this.onStatusChange);
} }
} }
onChange() { componentWillUnmount() {
if (this.state.search) { ChannelStore.removeStatsChangeListener(this.onChange);
UserStore.removeInChannelChangeListener(this.onChange);
UserStore.removeStatusesChangeListener(this.onStatusChange);
}
onChange(force) {
if (this.state.search && !force) {
this.search(this.term); this.search(this.term);
return; 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) { handleRemove(user) {
const userId = user.id; const userId = user.id;
@@ -110,7 +127,8 @@ export default class ChannelMembersModal extends React.Component {
this.term = term; this.term = term;
if (term === '') { if (term === '') {
this.setState({users: UserStore.getProfileListInChannel(this.props.channel.id), search: false}); this.onChange(true);
this.setState({search: false});
return; return;
} }

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

@@ -38,6 +38,7 @@ export default class MemberListTeam extends React.Component {
componentDidMount() { componentDidMount() {
UserStore.addInTeamChangeListener(this.onChange); UserStore.addInTeamChangeListener(this.onChange);
UserStore.addStatusesChangeListener(this.onChange);
TeamStore.addChangeListener(this.onChange); TeamStore.addChangeListener(this.onChange);
TeamStore.addStatsChangeListener(this.onStatsChange); TeamStore.addStatsChangeListener(this.onStatsChange);
@@ -47,6 +48,7 @@ export default class MemberListTeam extends React.Component {
componentWillUnmount() { componentWillUnmount() {
UserStore.removeInTeamChangeListener(this.onChange); UserStore.removeInTeamChangeListener(this.onChange);
UserStore.removeStatusesChangeListener(this.onChange);
TeamStore.removeChangeListener(this.onChange); TeamStore.removeChangeListener(this.onChange);
TeamStore.removeStatsChangeListener(this.onStatsChange); TeamStore.removeStatsChangeListener(this.onStatsChange);
} }
@@ -55,12 +57,12 @@ export default class MemberListTeam extends React.Component {
this.setState({loading: false}); this.setState({loading: false});
} }
onChange() { onChange(force) {
if (!this.state.search) { if (this.state.search && !force) {
this.setState({users: UserStore.getProfileListInTeam()}); return;
} }
this.setState({teamMembers: Object.assign([], TeamStore.getMembersInTeam())}); this.setState({users: UserStore.getProfileListInTeam(), teamMembers: Object.assign([], TeamStore.getMembersInTeam())});
} }
onStatsChange() { onStatsChange() {
@@ -74,7 +76,8 @@ export default class MemberListTeam extends React.Component {
search(term) { search(term) {
if (term === '') { if (term === '') {
this.setState({search: false, users: UserStore.getProfileListInTeam()}); this.onChange(true);
this.setState({search: false});
return; return;
} }