allow escaping the first slash to not write a command

pull/21833/head
Bruno Windels 2019-09-02 17:53:14 +02:00
parent 5565eca0cb
commit 712c3e5450
2 changed files with 15 additions and 1 deletions

View File

@ -18,7 +18,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import dis from '../../../dispatcher';
import EditorModel from '../../../editor/model';
import {htmlSerializeIfNeeded, textSerialize, containsEmote, stripEmoteCommand} from '../../../editor/serialize';
import {htmlSerializeIfNeeded, textSerialize, containsEmote, stripEmoteCommand, unescapeMessage} from '../../../editor/serialize';
import {CommandPartCreator} from '../../../editor/parts';
import {MatrixClient} from 'matrix-js-sdk';
import BasicMessageComposer from "./BasicMessageComposer";
@ -54,6 +54,7 @@ function createMessageContent(model, permalinkCreator) {
if (isEmote) {
model = stripEmoteCommand(model);
}
model = unescapeMessage(model);
const repliedToEvent = RoomViewStore.getQuotingEvent();
const body = textSerialize(model);

View File

@ -74,3 +74,16 @@ export function stripEmoteCommand(model) {
model.removeText({index: 0, offset: 0}, 4);
return model;
}
export function unescapeMessage(model) {
const {parts} = model;
if (parts.length) {
const firstPart = parts[0];
// only unescape \/ to / at start of editor
if (firstPart.type === "plain" && firstPart.text.startsWith("\\/")) {
model = model.clone();
model.removeText({index: 0, offset: 0}, 1);
}
}
return model;
}