Removed some internal state from ChannelMembersModal and ChannelInviteModal

Этот коммит содержится в:
hmhealey
2015-12-03 12:57:34 -05:00
родитель d09ace15f2
Коммит ea80836c6e
7 изменённых файлов: 23 добавлений и 53 удалений

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

@@ -203,6 +203,7 @@ export default class ChannelHeader extends React.Component {
<ToggleModalButton
role='menuitem'
dialogType={ChannelInviteModal}
dialogProps={{channel}}
>
{'Add Members'}
</ToggleModalButton>
@@ -403,6 +404,7 @@ export default class ChannelHeader extends React.Component {
<ChannelMembersModal
show={this.state.showMembersModal}
onModalDismissed={() => this.setState({showMembersModal: false})}
channel={channel}
/>
</div>
);

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

@@ -53,15 +53,8 @@ export default class ChannelInviteModal extends React.Component {
return a.username.localeCompare(b.username);
});
var channelName = '';
if (ChannelStore.getCurrent()) {
channelName = ChannelStore.getCurrent().display_name;
}
return {
nonmembers,
memberIds,
channelName,
loading
};
}
@@ -94,28 +87,14 @@ export default class ChannelInviteModal extends React.Component {
}
}
handleInvite(userId) {
// Make sure the user isn't already a member of the channel
if (this.state.memberIds.indexOf(userId) > -1) {
return;
}
var data = {};
data.user_id = userId;
Client.addChannelMember(ChannelStore.getCurrentId(), data,
Client.addChannelMember(
this.props.channel.id,
data,
() => {
var nonmembers = this.state.nonmembers;
var memberIds = this.state.memberIds;
for (var i = 0; i < nonmembers.length; i++) {
if (userId === nonmembers[i].id) {
nonmembers[i].invited = true;
memberIds.push(userId);
break;
}
}
this.setState({inviteError: null, memberIds, nonmembers});
this.setState({inviteError: null});
AsyncClient.getChannelExtraInfo();
},
(err) => {
@@ -160,7 +139,7 @@ export default class ChannelInviteModal extends React.Component {
onHide={this.props.onHide}
>
<Modal.Header closeButton={true}>
<Modal.Title>{'Add New Members to '}<span className='name'>{this.state.channelName}</span></Modal.Title>
<Modal.Title>{'Add New Members to '}<span className='name'>{this.props.channel.display_nam}</span></Modal.Title>
</Modal.Header>
<Modal.Body
ref='modalBody'
@@ -185,5 +164,6 @@ export default class ChannelInviteModal extends React.Component {
ChannelInviteModal.propTypes = {
show: React.PropTypes.bool.isRequired,
onHide: React.PropTypes.func.isRequired
onHide: React.PropTypes.func.isRequired,
channel: React.PropTypes.object.isRequired
};

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

@@ -69,16 +69,9 @@ export default class ChannelMembersModal extends React.Component {
memberList.sort(compareByUsername);
nonmemberList.sort(compareByUsername);
const channel = ChannelStore.getCurrent();
let channelName = '';
if (channel) {
channelName = channel.display_name;
}
return {
nonmemberList,
memberList,
channelName
memberList
};
}
onShow() {
@@ -169,7 +162,7 @@ export default class ChannelMembersModal extends React.Component {
onHide={this.props.onModalDismissed}
>
<Modal.Header closeButton={true}>
<Modal.Title><span className='name'>{this.state.channelName}</span>{' Members'}</Modal.Title>
<Modal.Title><span className='name'>{this.props.channel.display_name}</span>{' Members'}</Modal.Title>
<a
className='btn btn-md btn-primary'
href='#'
@@ -206,6 +199,7 @@ export default class ChannelMembersModal extends React.Component {
<ChannelInviteModal
show={this.state.showInviteModal}
onHide={() => this.setState({showInviteModal: false})}
channel={this.props.channel}
/>
</div>
);
@@ -218,5 +212,6 @@ ChannelMembersModal.defaultProps = {
ChannelMembersModal.propTypes = {
show: React.PropTypes.bool.isRequired,
onModalDismissed: React.PropTypes.func.isRequired
onModalDismissed: React.PropTypes.func.isRequired,
channel: React.PropTypes.object.isRequired
};

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

@@ -31,9 +31,7 @@ export default class MemberListItem extends React.Component {
var timestamp = UserStore.getCurrentUser().update_at;
var invite;
if (member.invited && this.props.handleInvite) {
invite = <span className='member-role'>Added</span>;
} else if (this.props.handleInvite) {
if (this.props.handleInvite) {
invite = (
<a
onClick={this.handleInvite}

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

@@ -173,6 +173,7 @@ export default class Navbar extends React.Component {
<ToggleModalButton
role='menuitem'
dialogType={ChannelInviteModal}
dialogProps={{channel}}
>
{'Add Members'}
</ToggleModalButton>
@@ -473,6 +474,7 @@ export default class Navbar extends React.Component {
<ChannelMembersModal
show={this.state.showMembersModal}
onModalDismissed={() => this.setState({showMembersModal: false})}
channel={{channel}}
/>
</div>
);

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

@@ -167,18 +167,7 @@ class ChannelStoreClass extends EventEmitter {
this.emitChange();
}
getCurrentExtraInfo() {
var currentId = this.getCurrentId();
var extra = null;
if (currentId) {
extra = this.pGetExtraInfos()[currentId];
}
if (extra == null) {
extra = {members: []};
}
return extra;
return this.getExtraInfo(this.getCurrentId());
}
getExtraInfo(channelId) {
var extra = null;
@@ -187,7 +176,10 @@ class ChannelStoreClass extends EventEmitter {
extra = this.pGetExtraInfos()[channelId];
}
if (extra == null) {
if (extra) {
// create a defensive copy
extra = JSON.parse(JSON.stringify(extra));
} else {
extra = {members: []};
}

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

@@ -167,6 +167,7 @@ function createInviteChannelMemberButton(channel, uiType) {
<ToggleModalButton
className='intro-links'
dialogType={ChannelInviteModal}
dialogProps={{channel}}
>
<i className='fa fa-user-plus'></i>{'Invite others to this ' + uiType}
</ToggleModalButton>