added ctrlSend checking (#3196)
Этот коммит содержится в:
@@ -84,7 +84,7 @@ class CreatePost extends React.Component {
|
|||||||
previews: draft.previews,
|
previews: draft.previews,
|
||||||
submitting: false,
|
submitting: false,
|
||||||
initialText: draft.messageText,
|
initialText: draft.messageText,
|
||||||
ctrlSend: false,
|
ctrlSend: PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter'),
|
||||||
centerTextbox: PreferenceStore.get(Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.CHANNEL_DISPLAY_MODE, Preferences.CHANNEL_DISPLAY_MODE_DEFAULT) === Preferences.CHANNEL_DISPLAY_MODE_CENTERED,
|
centerTextbox: PreferenceStore.get(Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.CHANNEL_DISPLAY_MODE, Preferences.CHANNEL_DISPLAY_MODE_DEFAULT) === Preferences.CHANNEL_DISPLAY_MODE_CENTERED,
|
||||||
showTutorialTip: false,
|
showTutorialTip: false,
|
||||||
showPostDeletedModal: false
|
showPostDeletedModal: false
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
|
|||||||
import Client from 'utils/web_client.jsx';
|
import Client from 'utils/web_client.jsx';
|
||||||
import Constants from 'utils/constants.jsx';
|
import Constants from 'utils/constants.jsx';
|
||||||
import * as Utils from 'utils/utils.jsx';
|
import * as Utils from 'utils/utils.jsx';
|
||||||
|
import PreferenceStore from 'stores/preference_store.jsx';
|
||||||
|
|
||||||
import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl';
|
import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl';
|
||||||
|
|
||||||
@@ -26,9 +27,12 @@ class EditChannelHeaderModal extends React.Component {
|
|||||||
|
|
||||||
this.handleChange = this.handleChange.bind(this);
|
this.handleChange = this.handleChange.bind(this);
|
||||||
this.handleSubmit = this.handleSubmit.bind(this);
|
this.handleSubmit = this.handleSubmit.bind(this);
|
||||||
|
this.handleKeyDown = this.handleKeyDown.bind(this);
|
||||||
this.onShow = this.onShow.bind(this);
|
this.onShow = this.onShow.bind(this);
|
||||||
this.onHide = this.onHide.bind(this);
|
this.onHide = this.onHide.bind(this);
|
||||||
|
this.onPreferenceChange = this.onPreferenceChange.bind(this);
|
||||||
|
|
||||||
|
this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter');
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
header: props.channel.header,
|
header: props.channel.header,
|
||||||
@@ -40,10 +44,16 @@ class EditChannelHeaderModal extends React.Component {
|
|||||||
if (this.props.show) {
|
if (this.props.show) {
|
||||||
this.onShow();
|
this.onShow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PreferenceStore.addChangeListener(this.onPreferenceChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
PreferenceStore.removeChangeListener(this.onPreferenceChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps(nextProps) {
|
componentWillReceiveProps(nextProps) {
|
||||||
if (this.props.channel.header !== nextProps.channel.header) {
|
if (this.props !== nextProps) {
|
||||||
this.setState({
|
this.setState({
|
||||||
header: nextProps.channel.header
|
header: nextProps.channel.header
|
||||||
});
|
});
|
||||||
@@ -62,6 +72,10 @@ class EditChannelHeaderModal extends React.Component {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onPreferenceChange() {
|
||||||
|
this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter');
|
||||||
|
}
|
||||||
|
|
||||||
handleSubmit() {
|
handleSubmit() {
|
||||||
Client.updateChannelHeader(
|
Client.updateChannelHeader(
|
||||||
this.props.channel.id,
|
this.props.channel.id,
|
||||||
@@ -99,6 +113,16 @@ class EditChannelHeaderModal extends React.Component {
|
|||||||
this.props.onHide();
|
this.props.onHide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleKeyDown(e) {
|
||||||
|
if (this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && e.ctrlKey) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.handleSubmit(e);
|
||||||
|
} else if (!this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && !e.shiftKey && !e.altKey) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.handleSubmit(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
var serverError = null;
|
var serverError = null;
|
||||||
if (this.state.serverError) {
|
if (this.state.serverError) {
|
||||||
@@ -136,6 +160,7 @@ class EditChannelHeaderModal extends React.Component {
|
|||||||
maxLength='1024'
|
maxLength='1024'
|
||||||
value={this.state.header}
|
value={this.state.header}
|
||||||
onChange={this.handleChange}
|
onChange={this.handleChange}
|
||||||
|
onKeyDown={this.handleKeyDown}
|
||||||
/>
|
/>
|
||||||
{serverError}
|
{serverError}
|
||||||
</Modal.Body>
|
</Modal.Body>
|
||||||
|
|||||||
@@ -6,9 +6,8 @@ import ReactDOM from 'react-dom';
|
|||||||
import * as AsyncClient from 'utils/async_client.jsx';
|
import * as AsyncClient from 'utils/async_client.jsx';
|
||||||
import Client from 'utils/web_client.jsx';
|
import Client from 'utils/web_client.jsx';
|
||||||
import Constants from 'utils/constants.jsx';
|
import Constants from 'utils/constants.jsx';
|
||||||
|
|
||||||
import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl';
|
import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl';
|
||||||
|
import PreferenceStore from 'stores/preference_store.jsx';
|
||||||
import {Modal} from 'react-bootstrap';
|
import {Modal} from 'react-bootstrap';
|
||||||
|
|
||||||
const holders = defineMessages({
|
const holders = defineMessages({
|
||||||
@@ -26,8 +25,22 @@ export default class EditChannelPurposeModal extends React.Component {
|
|||||||
|
|
||||||
this.handleHide = this.handleHide.bind(this);
|
this.handleHide = this.handleHide.bind(this);
|
||||||
this.handleSave = this.handleSave.bind(this);
|
this.handleSave = this.handleSave.bind(this);
|
||||||
|
this.handleKeyDown = this.handleKeyDown.bind(this);
|
||||||
|
this.onPreferenceChange = this.onPreferenceChange.bind(this);
|
||||||
|
|
||||||
this.state = {serverError: ''};
|
this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter');
|
||||||
|
|
||||||
|
this.state = {
|
||||||
|
serverError: ''
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
PreferenceStore.addChangeListener(this.onPreferenceChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
PreferenceStore.removeChangeListener(this.onPreferenceChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidUpdate() {
|
componentDidUpdate() {
|
||||||
@@ -44,11 +57,24 @@ export default class EditChannelPurposeModal extends React.Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onPreferenceChange() {
|
||||||
|
this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter');
|
||||||
|
}
|
||||||
|
|
||||||
|
handleKeyDown(e) {
|
||||||
|
if (this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && e.ctrlKey) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.handleSave(e);
|
||||||
|
} else if (!this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && !e.shiftKey && !e.altKey) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.handleSave(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
handleSave() {
|
handleSave() {
|
||||||
if (!this.props.channel) {
|
if (!this.props.channel) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client.updateChannelPurpose(
|
Client.updateChannelPurpose(
|
||||||
this.props.channel.id,
|
this.props.channel.id,
|
||||||
ReactDOM.findDOMNode(this.refs.purpose).value.trim(),
|
ReactDOM.findDOMNode(this.refs.purpose).value.trim(),
|
||||||
@@ -145,6 +171,7 @@ export default class EditChannelPurposeModal extends React.Component {
|
|||||||
rows='6'
|
rows='6'
|
||||||
maxLength='128'
|
maxLength='128'
|
||||||
defaultValue={this.props.channel.purpose}
|
defaultValue={this.props.channel.purpose}
|
||||||
|
onKeyDown={this.handleKeyDown}
|
||||||
/>
|
/>
|
||||||
{serverError}
|
{serverError}
|
||||||
</Modal.Body>
|
</Modal.Body>
|
||||||
|
|||||||
@@ -82,6 +82,10 @@ class EditPostModal extends React.Component {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
ReactDOM.findDOMNode(this.refs.editbox).blur();
|
ReactDOM.findDOMNode(this.refs.editbox).blur();
|
||||||
this.handleEdit(e);
|
this.handleEdit(e);
|
||||||
|
} else if (this.state.ctrlSend && e.ctrlKey && e.which === KeyCodes.ENTER) {
|
||||||
|
e.preventDefault();
|
||||||
|
ReactDOM.findDOMNode(this.refs.editbox).blur();
|
||||||
|
this.handleSubmit(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
handleEditPostEvent(options) {
|
handleEditPostEvent(options) {
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ class PreferenceStoreClass extends EventEmitter {
|
|||||||
this.dispatchToken = AppDispatcher.register(this.handleEventPayload);
|
this.dispatchToken = AppDispatcher.register(this.handleEventPayload);
|
||||||
|
|
||||||
this.preferences = new Map();
|
this.preferences = new Map();
|
||||||
|
|
||||||
|
this.setMaxListeners(15);
|
||||||
}
|
}
|
||||||
|
|
||||||
getKey(category, name) {
|
getKey(category, name) {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user