From c760ba083947bcf8e89019a35966d1b252f94c30 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Wed, 25 Sep 2019 17:30:01 +0200 Subject: [PATCH 1/2] make command detection more resilient --- src/components/views/rooms/SendMessageComposer.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js index f6e5830329..2717ff58c5 100644 --- a/src/components/views/rooms/SendMessageComposer.js +++ b/src/components/views/rooms/SendMessageComposer.js @@ -170,7 +170,19 @@ export default class SendMessageComposer extends React.Component { _isSlashCommand() { const parts = this.model.parts; - return parts.length && parts[0].type === "command"; + const firstPart = parts[0]; + if (firstPart) { + if (firstPart.type === "command") { + return true; + } + // be extra resilient when somehow the AutocompleteWrapperModel or + // CommandPartCreator fails to insert a command part, so we don't send + // a command as a message + if (firstPart.type === "plain" && firstPart.text.startsWith("/")) { + return true; + } + } + return false; } async _runSlashCommand() { From 0bbbb5e336e17e7bc286d0470548e8b79214e3f1 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Wed, 25 Sep 2019 17:30:12 +0200 Subject: [PATCH 2/2] use mxid for user pill in command --- src/components/views/rooms/SendMessageComposer.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js index 2717ff58c5..f477a6137d 100644 --- a/src/components/views/rooms/SendMessageComposer.js +++ b/src/components/views/rooms/SendMessageComposer.js @@ -187,6 +187,10 @@ export default class SendMessageComposer extends React.Component { async _runSlashCommand() { const commandText = this.model.parts.reduce((text, part) => { + // use mxid to textify user pills in a command + if (part.type === "user-pill") { + return text + part.resourceId; + } return text + part.text; }, ""); const cmd = processCommandInput(this.props.room.roomId, commandText);