diff options
author | =Corey Hulen <corey@hulen.com> | 2016-01-14 09:08:13 -0600 |
---|---|---|
committer | =Corey Hulen <corey@hulen.com> | 2016-01-14 09:08:13 -0600 |
commit | 6d6cada0970a2b341f36dac9b0fed8262ada1865 (patch) | |
tree | fc3728f15deaebd0c870838a63735659a33456e7 /web/react/components/channel_invite_modal.jsx | |
parent | 0b986ed3147c885af6b2f33e1ff3eb6754e8f274 (diff) | |
parent | a341dbad2b8a4564b6f270c79f2f9932e499ac80 (diff) | |
download | chat-6d6cada0970a2b341f36dac9b0fed8262ada1865.tar.gz chat-6d6cada0970a2b341f36dac9b0fed8262ada1865.tar.bz2 chat-6d6cada0970a2b341f36dac9b0fed8262ada1865.zip |
Merge branch 'master' into PLT-1429
Diffstat (limited to 'web/react/components/channel_invite_modal.jsx')
-rw-r--r-- | web/react/components/channel_invite_modal.jsx | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/web/react/components/channel_invite_modal.jsx b/web/react/components/channel_invite_modal.jsx index 7dac39942..8b7485e5f 100644 --- a/web/react/components/channel_invite_modal.jsx +++ b/web/react/components/channel_invite_modal.jsx @@ -20,9 +20,14 @@ export default class ChannelInviteModal extends React.Component { this.onListenerChange = this.onListenerChange.bind(this); this.handleInvite = this.handleInvite.bind(this); - this.state = this.getStateFromStores(); + // the state gets populated when the modal is shown + this.state = {}; } shouldComponentUpdate(nextProps, nextState) { + if (!this.props.show && !nextProps.show) { + return false; + } + if (!Utils.areObjectsEqual(this.props, nextProps)) { return true; } @@ -34,13 +39,25 @@ export default class ChannelInviteModal extends React.Component { return false; } getStateFromStores() { - function getId(user) { - return user.id; + const users = UserStore.getActiveOnlyProfiles(); + + if ($.isEmptyObject(users)) { + return { + loading: true + }; + } + + // make sure we have all members of this channel before rendering + const extraInfo = ChannelStore.getCurrentExtraInfo(); + if (extraInfo.member_count !== extraInfo.members.length) { + AsyncClient.getChannelExtraInfo(this.props.channel.id, -1); + + return { + loading: true + }; } - var users = UserStore.getActiveOnlyProfiles(); - var memberIds = ChannelStore.getCurrentExtraInfo().members.map(getId); - var loading = $.isEmptyObject(users); + const memberIds = extraInfo.members.map((user) => user.id); var nonmembers = []; for (var id in users) { @@ -55,7 +72,7 @@ export default class ChannelInviteModal extends React.Component { return { nonmembers, - loading + loading: false }; } onShow() { |