Removed some internal state from ChannelMembersModal and ChannelInviteModal
Этот коммит содержится в:
@@ -203,6 +203,7 @@ export default class ChannelHeader extends React.Component {
|
|||||||
<ToggleModalButton
|
<ToggleModalButton
|
||||||
role='menuitem'
|
role='menuitem'
|
||||||
dialogType={ChannelInviteModal}
|
dialogType={ChannelInviteModal}
|
||||||
|
dialogProps={{channel}}
|
||||||
>
|
>
|
||||||
{'Add Members'}
|
{'Add Members'}
|
||||||
</ToggleModalButton>
|
</ToggleModalButton>
|
||||||
@@ -403,6 +404,7 @@ export default class ChannelHeader extends React.Component {
|
|||||||
<ChannelMembersModal
|
<ChannelMembersModal
|
||||||
show={this.state.showMembersModal}
|
show={this.state.showMembersModal}
|
||||||
onModalDismissed={() => this.setState({showMembersModal: false})}
|
onModalDismissed={() => this.setState({showMembersModal: false})}
|
||||||
|
channel={channel}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -53,15 +53,8 @@ export default class ChannelInviteModal extends React.Component {
|
|||||||
return a.username.localeCompare(b.username);
|
return a.username.localeCompare(b.username);
|
||||||
});
|
});
|
||||||
|
|
||||||
var channelName = '';
|
|
||||||
if (ChannelStore.getCurrent()) {
|
|
||||||
channelName = ChannelStore.getCurrent().display_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
nonmembers,
|
nonmembers,
|
||||||
memberIds,
|
|
||||||
channelName,
|
|
||||||
loading
|
loading
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -94,28 +87,14 @@ export default class ChannelInviteModal extends React.Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
handleInvite(userId) {
|
handleInvite(userId) {
|
||||||
// Make sure the user isn't already a member of the channel
|
|
||||||
if (this.state.memberIds.indexOf(userId) > -1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var data = {};
|
var data = {};
|
||||||
data.user_id = userId;
|
data.user_id = userId;
|
||||||
|
|
||||||
Client.addChannelMember(ChannelStore.getCurrentId(), data,
|
Client.addChannelMember(
|
||||||
|
this.props.channel.id,
|
||||||
|
data,
|
||||||
() => {
|
() => {
|
||||||
var nonmembers = this.state.nonmembers;
|
this.setState({inviteError: null});
|
||||||
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});
|
|
||||||
AsyncClient.getChannelExtraInfo();
|
AsyncClient.getChannelExtraInfo();
|
||||||
},
|
},
|
||||||
(err) => {
|
(err) => {
|
||||||
@@ -160,7 +139,7 @@ export default class ChannelInviteModal extends React.Component {
|
|||||||
onHide={this.props.onHide}
|
onHide={this.props.onHide}
|
||||||
>
|
>
|
||||||
<Modal.Header closeButton={true}>
|
<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.Header>
|
||||||
<Modal.Body
|
<Modal.Body
|
||||||
ref='modalBody'
|
ref='modalBody'
|
||||||
@@ -185,5 +164,6 @@ export default class ChannelInviteModal extends React.Component {
|
|||||||
|
|
||||||
ChannelInviteModal.propTypes = {
|
ChannelInviteModal.propTypes = {
|
||||||
show: React.PropTypes.bool.isRequired,
|
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);
|
memberList.sort(compareByUsername);
|
||||||
nonmemberList.sort(compareByUsername);
|
nonmemberList.sort(compareByUsername);
|
||||||
|
|
||||||
const channel = ChannelStore.getCurrent();
|
|
||||||
let channelName = '';
|
|
||||||
if (channel) {
|
|
||||||
channelName = channel.display_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
nonmemberList,
|
nonmemberList,
|
||||||
memberList,
|
memberList
|
||||||
channelName
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
onShow() {
|
onShow() {
|
||||||
@@ -169,7 +162,7 @@ export default class ChannelMembersModal extends React.Component {
|
|||||||
onHide={this.props.onModalDismissed}
|
onHide={this.props.onModalDismissed}
|
||||||
>
|
>
|
||||||
<Modal.Header closeButton={true}>
|
<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
|
<a
|
||||||
className='btn btn-md btn-primary'
|
className='btn btn-md btn-primary'
|
||||||
href='#'
|
href='#'
|
||||||
@@ -206,6 +199,7 @@ export default class ChannelMembersModal extends React.Component {
|
|||||||
<ChannelInviteModal
|
<ChannelInviteModal
|
||||||
show={this.state.showInviteModal}
|
show={this.state.showInviteModal}
|
||||||
onHide={() => this.setState({showInviteModal: false})}
|
onHide={() => this.setState({showInviteModal: false})}
|
||||||
|
channel={this.props.channel}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@@ -218,5 +212,6 @@ ChannelMembersModal.defaultProps = {
|
|||||||
|
|
||||||
ChannelMembersModal.propTypes = {
|
ChannelMembersModal.propTypes = {
|
||||||
show: React.PropTypes.bool.isRequired,
|
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 timestamp = UserStore.getCurrentUser().update_at;
|
||||||
|
|
||||||
var invite;
|
var invite;
|
||||||
if (member.invited && this.props.handleInvite) {
|
if (this.props.handleInvite) {
|
||||||
invite = <span className='member-role'>Added</span>;
|
|
||||||
} else if (this.props.handleInvite) {
|
|
||||||
invite = (
|
invite = (
|
||||||
<a
|
<a
|
||||||
onClick={this.handleInvite}
|
onClick={this.handleInvite}
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ export default class Navbar extends React.Component {
|
|||||||
<ToggleModalButton
|
<ToggleModalButton
|
||||||
role='menuitem'
|
role='menuitem'
|
||||||
dialogType={ChannelInviteModal}
|
dialogType={ChannelInviteModal}
|
||||||
|
dialogProps={{channel}}
|
||||||
>
|
>
|
||||||
{'Add Members'}
|
{'Add Members'}
|
||||||
</ToggleModalButton>
|
</ToggleModalButton>
|
||||||
@@ -473,6 +474,7 @@ export default class Navbar extends React.Component {
|
|||||||
<ChannelMembersModal
|
<ChannelMembersModal
|
||||||
show={this.state.showMembersModal}
|
show={this.state.showMembersModal}
|
||||||
onModalDismissed={() => this.setState({showMembersModal: false})}
|
onModalDismissed={() => this.setState({showMembersModal: false})}
|
||||||
|
channel={{channel}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -167,18 +167,7 @@ class ChannelStoreClass extends EventEmitter {
|
|||||||
this.emitChange();
|
this.emitChange();
|
||||||
}
|
}
|
||||||
getCurrentExtraInfo() {
|
getCurrentExtraInfo() {
|
||||||
var currentId = this.getCurrentId();
|
return this.getExtraInfo(this.getCurrentId());
|
||||||
var extra = null;
|
|
||||||
|
|
||||||
if (currentId) {
|
|
||||||
extra = this.pGetExtraInfos()[currentId];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (extra == null) {
|
|
||||||
extra = {members: []};
|
|
||||||
}
|
|
||||||
|
|
||||||
return extra;
|
|
||||||
}
|
}
|
||||||
getExtraInfo(channelId) {
|
getExtraInfo(channelId) {
|
||||||
var extra = null;
|
var extra = null;
|
||||||
@@ -187,7 +176,10 @@ class ChannelStoreClass extends EventEmitter {
|
|||||||
extra = this.pGetExtraInfos()[channelId];
|
extra = this.pGetExtraInfos()[channelId];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extra == null) {
|
if (extra) {
|
||||||
|
// create a defensive copy
|
||||||
|
extra = JSON.parse(JSON.stringify(extra));
|
||||||
|
} else {
|
||||||
extra = {members: []};
|
extra = {members: []};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ function createInviteChannelMemberButton(channel, uiType) {
|
|||||||
<ToggleModalButton
|
<ToggleModalButton
|
||||||
className='intro-links'
|
className='intro-links'
|
||||||
dialogType={ChannelInviteModal}
|
dialogType={ChannelInviteModal}
|
||||||
|
dialogProps={{channel}}
|
||||||
>
|
>
|
||||||
<i className='fa fa-user-plus'></i>{'Invite others to this ' + uiType}
|
<i className='fa fa-user-plus'></i>{'Invite others to this ' + uiType}
|
||||||
</ToggleModalButton>
|
</ToggleModalButton>
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user