Merge pull request #1237 from matrix-org/luke/fix-rte-colon-parity

Implement old composer feature that inserts ': ' or ' '
This commit is contained in:
David Baker 2017-07-20 13:05:40 +01:00 committed by GitHub
commit 199b771051
2 changed files with 9 additions and 2 deletions

View file

@ -55,6 +55,7 @@ export default class UserProvider extends AutocompleteProvider {
const displayName = (user.name || user.userId || '').replace(' (IRC)', ''); // FIXME when groups are done
return {
completion: displayName,
suffix: range.start === 0 ? ': ' : ' ',
entity: {
type: 'LINK',
mutability: 'IMMUTABLE',

View file

@ -928,7 +928,7 @@ export default class MessageComposerInput extends React.Component {
return false;
}
const {range = {}, completion = '', entity = null} = displayedCompletion;
const {range = {}, completion = '', entity = null, suffix = ''} = displayedCompletion;
let entityKey;
if (entity) {
entityKey = Entity.create(
@ -938,7 +938,7 @@ export default class MessageComposerInput extends React.Component {
);
}
const contentState = Modifier.replaceText(
let contentState = Modifier.replaceText(
activeEditorState.getCurrentContent(),
RichText.textOffsetsToSelectionState(
range, activeEditorState.getCurrentContent().getBlocksAsArray(),
@ -948,6 +948,12 @@ export default class MessageComposerInput extends React.Component {
entityKey,
);
// Move the selection to the end of the block
const afterSelection = contentState.getSelectionAfter();
if (suffix) {
contentState = Modifier.replaceText(contentState, afterSelection, suffix);
}
let editorState = EditorState.push(activeEditorState, contentState, 'insert-characters');
editorState = EditorState.forceSelection(editorState, contentState.getSelectionAfter());
this.setState({editorState, originalEditorState: activeEditorState});