Merge pull request #2423 from matrix-org/dbkr/lint_messagecomposerinput
Fix lint errors in MessageComposerInput
This commit is contained in:
commit
fc346b2766
3 changed files with 25 additions and 30 deletions
|
@ -53,7 +53,6 @@ src/components/views/rooms/MemberInfo.js
|
||||||
src/components/views/rooms/MemberList.js
|
src/components/views/rooms/MemberList.js
|
||||||
src/components/views/rooms/MemberTile.js
|
src/components/views/rooms/MemberTile.js
|
||||||
src/components/views/rooms/MessageComposer.js
|
src/components/views/rooms/MessageComposer.js
|
||||||
src/components/views/rooms/MessageComposerInput.js
|
|
||||||
src/components/views/rooms/PinnedEventTile.js
|
src/components/views/rooms/PinnedEventTile.js
|
||||||
src/components/views/rooms/RoomList.js
|
src/components/views/rooms/RoomList.js
|
||||||
src/components/views/rooms/RoomPreviewBar.js
|
src/components/views/rooms/RoomPreviewBar.js
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
"start:init": "babel src -d lib --source-maps --copy-files",
|
"start:init": "babel src -d lib --source-maps --copy-files",
|
||||||
"lint": "eslint src/",
|
"lint": "eslint src/",
|
||||||
"lintall": "eslint src/ test/",
|
"lintall": "eslint src/ test/",
|
||||||
"lintwithexclusions": "eslint --max-warnings 19 --ignore-path .eslintignore.errorfiles src test",
|
"lintwithexclusions": "eslint --max-warnings 18 --ignore-path .eslintignore.errorfiles src test",
|
||||||
"clean": "rimraf lib",
|
"clean": "rimraf lib",
|
||||||
"prepublish": "npm run clean && npm run build && git rev-parse HEAD > git-revision.txt",
|
"prepublish": "npm run clean && npm run build && git rev-parse HEAD > git-revision.txt",
|
||||||
"test": "karma start --single-run=true --browsers ChromeHeadless",
|
"test": "karma start --single-run=true --browsers ChromeHeadless",
|
||||||
|
|
|
@ -15,13 +15,11 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import type SyntheticKeyboardEvent from 'react/lib/SyntheticKeyboardEvent';
|
|
||||||
|
|
||||||
import { Editor } from 'slate-react';
|
import { Editor } from 'slate-react';
|
||||||
import { getEventTransfer } from 'slate-react';
|
import { getEventTransfer } from 'slate-react';
|
||||||
import { Value, Document, Block, Inline, Text, Range, Node } from 'slate';
|
import { Value, Block, Inline, Range } from 'slate';
|
||||||
import type { Change } from 'slate';
|
import type { Change } from 'slate';
|
||||||
|
|
||||||
import Html from 'slate-html-serializer';
|
import Html from 'slate-html-serializer';
|
||||||
|
@ -30,7 +28,6 @@ import Plain from 'slate-plain-serializer';
|
||||||
import PlainWithPillsSerializer from "../../../autocomplete/PlainWithPillsSerializer";
|
import PlainWithPillsSerializer from "../../../autocomplete/PlainWithPillsSerializer";
|
||||||
|
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import Promise from 'bluebird';
|
|
||||||
|
|
||||||
import MatrixClientPeg from '../../../MatrixClientPeg';
|
import MatrixClientPeg from '../../../MatrixClientPeg';
|
||||||
import type {MatrixClient} from 'matrix-js-sdk/lib/matrix';
|
import type {MatrixClient} from 'matrix-js-sdk/lib/matrix';
|
||||||
|
@ -38,7 +35,7 @@ import {processCommandInput} from '../../../SlashCommands';
|
||||||
import { KeyCode, isOnlyCtrlOrCmdKeyEvent } from '../../../Keyboard';
|
import { KeyCode, isOnlyCtrlOrCmdKeyEvent } from '../../../Keyboard';
|
||||||
import Modal from '../../../Modal';
|
import Modal from '../../../Modal';
|
||||||
import sdk from '../../../index';
|
import sdk from '../../../index';
|
||||||
import { _t, _td } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import Analytics from '../../../Analytics';
|
import Analytics from '../../../Analytics';
|
||||||
|
|
||||||
import * as RichText from '../../../RichText';
|
import * as RichText from '../../../RichText';
|
||||||
|
@ -49,27 +46,24 @@ import Markdown from '../../../Markdown';
|
||||||
import ComposerHistoryManager from '../../../ComposerHistoryManager';
|
import ComposerHistoryManager from '../../../ComposerHistoryManager';
|
||||||
import MessageComposerStore from '../../../stores/MessageComposerStore';
|
import MessageComposerStore from '../../../stores/MessageComposerStore';
|
||||||
|
|
||||||
import {MATRIXTO_MD_LINK_PATTERN, MATRIXTO_URL_PATTERN} from '../../../linkify-matrix';
|
import {MATRIXTO_URL_PATTERN} from '../../../linkify-matrix';
|
||||||
const REGEX_MATRIXTO_MARKDOWN_GLOBAL = new RegExp(MATRIXTO_MD_LINK_PATTERN, 'g');
|
|
||||||
|
|
||||||
import {asciiRegexp, unicodeRegexp, shortnameToUnicode, emojioneList, asciiList, mapUnicodeToShort, toShort} from 'emojione';
|
import {
|
||||||
|
asciiRegexp, unicodeRegexp, shortnameToUnicode,
|
||||||
|
asciiList, mapUnicodeToShort, toShort,
|
||||||
|
} from 'emojione';
|
||||||
import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
|
import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
|
||||||
import {makeUserPermalink} from "../../../matrix-to";
|
import {makeUserPermalink} from "../../../matrix-to";
|
||||||
import ReplyPreview from "./ReplyPreview";
|
import ReplyPreview from "./ReplyPreview";
|
||||||
import ReplyThread from "../elements/ReplyThread";
|
import ReplyThread from "../elements/ReplyThread";
|
||||||
import {ContentHelpers} from 'matrix-js-sdk';
|
import {ContentHelpers} from 'matrix-js-sdk';
|
||||||
|
|
||||||
const EMOJI_SHORTNAMES = Object.keys(emojioneList);
|
|
||||||
const EMOJI_UNICODE_TO_SHORTNAME = mapUnicodeToShort();
|
const EMOJI_UNICODE_TO_SHORTNAME = mapUnicodeToShort();
|
||||||
const REGEX_EMOJI_WHITESPACE = new RegExp('(?:^|\\s)(' + asciiRegexp + ')\\s$');
|
const REGEX_EMOJI_WHITESPACE = new RegExp('(?:^|\\s)(' + asciiRegexp + ')\\s$');
|
||||||
const EMOJI_REGEX = new RegExp(unicodeRegexp, 'g');
|
const EMOJI_REGEX = new RegExp(unicodeRegexp, 'g');
|
||||||
|
|
||||||
const TYPING_USER_TIMEOUT = 10000; const TYPING_SERVER_TIMEOUT = 30000;
|
const TYPING_USER_TIMEOUT = 10000; const TYPING_SERVER_TIMEOUT = 30000;
|
||||||
|
|
||||||
const ENTITY_TYPES = {
|
|
||||||
AT_ROOM_PILL: 'ATROOMPILL',
|
|
||||||
};
|
|
||||||
|
|
||||||
// the Slate node type to default to for unstyled text
|
// the Slate node type to default to for unstyled text
|
||||||
const DEFAULT_NODE = 'paragraph';
|
const DEFAULT_NODE = 'paragraph';
|
||||||
|
|
||||||
|
@ -114,15 +108,6 @@ const SLATE_SCHEMA = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
function onSendMessageFailed(err, room) {
|
|
||||||
// XXX: temporary logging to try to diagnose
|
|
||||||
// https://github.com/vector-im/riot-web/issues/3148
|
|
||||||
console.log('MessageComposer got send failure: ' + err.name + '('+err+')');
|
|
||||||
this.props.roomViewStore.getDispatcher().dispatch({
|
|
||||||
action: 'message_send_failed',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function rangeEquals(a: Range, b: Range): boolean {
|
function rangeEquals(a: Range, b: Range): boolean {
|
||||||
return (a.anchor.key === b.anchor.key
|
return (a.anchor.key === b.anchor.key
|
||||||
&& a.anchor.offset === b.anchorOffset
|
&& a.anchor.offset === b.anchorOffset
|
||||||
|
@ -370,8 +355,16 @@ export default class MessageComposerInput extends React.Component {
|
||||||
this._editor = e;
|
this._editor = e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSendMessageFailed = (err, room) => {
|
||||||
|
// XXX: temporary logging to try to diagnose
|
||||||
|
// https://github.com/vector-im/riot-web/issues/3148
|
||||||
|
console.log('MessageComposer got send failure: ' + err.name + '('+err+')');
|
||||||
|
this.props.roomViewStore.getDispatcher().dispatch({
|
||||||
|
action: 'message_send_failed',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
onAction = (payload) => {
|
onAction = (payload) => {
|
||||||
const editor = this._editor;
|
|
||||||
const editorState = this.state.editorState;
|
const editorState = this.state.editorState;
|
||||||
|
|
||||||
switch (payload.action) {
|
switch (payload.action) {
|
||||||
|
@ -868,7 +861,7 @@ export default class MessageComposerInput extends React.Component {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const newState: ?Value = null;
|
//const newState: ?Value = null;
|
||||||
|
|
||||||
// Draft handles rich text mode commands by default but we need to do it ourselves for Markdown.
|
// Draft handles rich text mode commands by default but we need to do it ourselves for Markdown.
|
||||||
if (this.state.isRichTextEnabled) {
|
if (this.state.isRichTextEnabled) {
|
||||||
|
@ -1119,7 +1112,9 @@ export default class MessageComposerInput extends React.Component {
|
||||||
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||||
Modal.createTrackedDialog('Server error', '', ErrorDialog, {
|
Modal.createTrackedDialog('Server error', '', ErrorDialog, {
|
||||||
title: _t("Server error"),
|
title: _t("Server error"),
|
||||||
description: ((err && err.message) ? err.message : _t("Server unavailable, overloaded, or something else went wrong.")),
|
description: ((err && err.message) ? err.message : _t(
|
||||||
|
"Server unavailable, overloaded, or something else went wrong.",
|
||||||
|
)),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else if (cmd.error) {
|
} else if (cmd.error) {
|
||||||
|
@ -1233,7 +1228,7 @@ export default class MessageComposerInput extends React.Component {
|
||||||
action: 'message_sent',
|
action: 'message_sent',
|
||||||
});
|
});
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
onSendMessageFailed(e, this.props.room);
|
this.onSendMessageFailed(e, this.props.room);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -1498,7 +1493,9 @@ export default class MessageComposerInput extends React.Component {
|
||||||
});
|
});
|
||||||
const style = {};
|
const style = {};
|
||||||
if (props.selected) style.border = '1px solid blue';
|
if (props.selected) style.border = '1px solid blue';
|
||||||
return <img className={ className } src={ uri } title={ shortname } alt={ emojiUnicode } style={style} />;
|
return <img className={ className } src={ uri }
|
||||||
|
title={ shortname } alt={ emojiUnicode } style={style}
|
||||||
|
/>;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1552,7 +1549,6 @@ export default class MessageComposerInput extends React.Component {
|
||||||
|
|
||||||
getSelectionRange(editorState: Value) {
|
getSelectionRange(editorState: Value) {
|
||||||
let beginning = false;
|
let beginning = false;
|
||||||
const query = this.getAutocompleteQuery(editorState);
|
|
||||||
const firstChild = editorState.document.nodes.get(0);
|
const firstChild = editorState.document.nodes.get(0);
|
||||||
const firstGrandChild = firstChild && firstChild.nodes.get(0);
|
const firstGrandChild = firstChild && firstChild.nodes.get(0);
|
||||||
beginning = (firstChild && firstGrandChild &&
|
beginning = (firstChild && firstGrandChild &&
|
||||||
|
|
Loading…
Reference in a new issue