From 712c3e5450ef77bde96ee8730efc2c0557ae9d5c Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 2 Sep 2019 17:53:14 +0200 Subject: [PATCH 1/2] allow escaping the first slash to not write a command --- src/components/views/rooms/SendMessageComposer.js | 3 ++- src/editor/serialize.js | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js index 0e03d83467..f1fac1cab0 100644 --- a/src/components/views/rooms/SendMessageComposer.js +++ b/src/components/views/rooms/SendMessageComposer.js @@ -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); diff --git a/src/editor/serialize.js b/src/editor/serialize.js index f3371ac8ee..07a1ad908e 100644 --- a/src/editor/serialize.js +++ b/src/editor/serialize.js @@ -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; +} From 06ae0645c77ae840c154d1e29491b758d428bf3c Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 2 Sep 2019 17:56:16 +0200 Subject: [PATCH 2/2] fix lint --- src/components/views/rooms/SendMessageComposer.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js index f1fac1cab0..b0a20a115a 100644 --- a/src/components/views/rooms/SendMessageComposer.js +++ b/src/components/views/rooms/SendMessageComposer.js @@ -18,7 +18,13 @@ import React from 'react'; import PropTypes from 'prop-types'; import dis from '../../../dispatcher'; import EditorModel from '../../../editor/model'; -import {htmlSerializeIfNeeded, textSerialize, containsEmote, stripEmoteCommand, unescapeMessage} 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";