Add confirm dialog before leaving private channel (#6206)
Этот коммит содержится в:
коммит произвёл
Corey Hulen
родитель
6c4c706313
Коммит
f1668bad15
@@ -14,6 +14,7 @@ import ChannelMembersModal from './channel_members_modal.jsx';
|
||||
import ChannelNotificationsModal from './channel_notifications_modal.jsx';
|
||||
import DeleteChannelModal from './delete_channel_modal.jsx';
|
||||
import RenameChannelModal from './rename_channel_modal.jsx';
|
||||
import ConfirmModal from './confirm_modal.jsx';
|
||||
import ToggleModalButton from './toggle_modal_button.jsx';
|
||||
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
@@ -57,6 +58,8 @@ export default class ChannelHeader extends React.Component {
|
||||
this.initWebrtc = this.initWebrtc.bind(this);
|
||||
this.onBusy = this.onBusy.bind(this);
|
||||
this.openDirectMessageModal = this.openDirectMessageModal.bind(this);
|
||||
this.createLeaveChannelModal = this.createLeaveChannelModal.bind(this);
|
||||
this.hideLeaveChannelModal = this.hideLeaveChannelModal.bind(this);
|
||||
|
||||
const state = this.getStateFromStores();
|
||||
state.showEditChannelPurposeModal = false;
|
||||
@@ -84,7 +87,8 @@ export default class ChannelHeader extends React.Component {
|
||||
otherUserId,
|
||||
enableFormatting: PreferenceStore.getBool(Preferences.CATEGORY_ADVANCED_SETTINGS, 'formatting', true),
|
||||
isBusy: WebrtcStore.isBusy(),
|
||||
isFavorite: channel && ChannelUtils.isFavoriteChannel(channel)
|
||||
isFavorite: channel && ChannelUtils.isFavoriteChannel(channel),
|
||||
showLeaveChannelModal: false
|
||||
};
|
||||
}
|
||||
|
||||
@@ -135,7 +139,13 @@ export default class ChannelHeader extends React.Component {
|
||||
}
|
||||
|
||||
handleLeave() {
|
||||
ChannelActions.leaveChannel(this.state.channel.id);
|
||||
if (this.state.channel.type === Constants.PRIVATE_CHANNEL) {
|
||||
this.setState({
|
||||
showLeaveChannelModal: true
|
||||
});
|
||||
} else {
|
||||
ChannelActions.leaveChannel(this.state.channel.id);
|
||||
}
|
||||
}
|
||||
|
||||
toggleFavorite = (e) => {
|
||||
@@ -219,6 +229,54 @@ export default class ChannelHeader extends React.Component {
|
||||
});
|
||||
}
|
||||
|
||||
hideLeaveChannelModal() {
|
||||
this.setState({
|
||||
showLeaveChannelModal: false
|
||||
});
|
||||
}
|
||||
|
||||
createLeaveChannelModal() {
|
||||
const title = (
|
||||
<FormattedMessage
|
||||
id='leave_private_channel_modal.title'
|
||||
defaultMessage='Leave Private Channel {channel}'
|
||||
values={{
|
||||
channel: <b>{this.state.channel.display_name}</b>
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
const message = (
|
||||
<FormattedMessage
|
||||
id='leave_private_channel_modal.message'
|
||||
defaultMessage='Are you sure you wish to leave the private channel {channel}? You must be re-invited in order to re-join this channel in the future.'
|
||||
values={{
|
||||
channel: <b>{this.state.channel.display_name}</b>
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
const buttonClass = 'btn btn-danger';
|
||||
const button = (
|
||||
<FormattedMessage
|
||||
id='leave_private_channel_modal.leave'
|
||||
defaultMessage='Yes, leave channel'
|
||||
/>
|
||||
);
|
||||
|
||||
return (
|
||||
<ConfirmModal
|
||||
show={this.state.showLeaveChannelModal}
|
||||
title={title}
|
||||
message={message}
|
||||
confirmButtonClass={buttonClass}
|
||||
confirmButton={button}
|
||||
onConfirm={() => ChannelActions.leaveChannel(this.state.channel.id)}
|
||||
onCancel={this.hideLeaveChannelModal}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
render() {
|
||||
const flagIcon = Constants.FLAG_ICON_SVG;
|
||||
const pinIcon = Constants.PIN_ICON;
|
||||
@@ -764,6 +822,8 @@ export default class ChannelHeader extends React.Component {
|
||||
);
|
||||
}
|
||||
|
||||
const leaveChannelModal = this.createLeaveChannelModal();
|
||||
|
||||
return (
|
||||
<div
|
||||
id='channel-header'
|
||||
@@ -876,6 +936,7 @@ export default class ChannelHeader extends React.Component {
|
||||
</table>
|
||||
{editPurposeModal}
|
||||
{channelMembersModal}
|
||||
{leaveChannelModal}
|
||||
<RenameChannelModal
|
||||
show={this.state.showRenameChannelModal}
|
||||
onHide={this.hideRenameChannelModal}
|
||||
|
||||
Ссылка в новой задаче
Block a user