diff --git a/src/components/views/rooms/BasicMessageComposer.tsx b/src/components/views/rooms/BasicMessageComposer.tsx index d83e2e964a..7afd39a5b1 100644 --- a/src/components/views/rooms/BasicMessageComposer.tsx +++ b/src/components/views/rooms/BasicMessageComposer.tsx @@ -182,15 +182,16 @@ export default class BasicMessageEditor extends React.Component if (data) { const { partCreator } = model; const moveStart = emoticonMatch[0][0] === " " ? 1 : 0; - const moveEnd = emoticonMatch[0].length - emoticonMatch.length - moveStart; // we need the range to only comprise of the emoticon // because we'll replace the whole range with an emoji, // so move the start forward to the start of the emoticon. // Take + 1 because index is reported without the possible preceding space. range.moveStartForwards(emoticonMatch.index + moveStart); - // and move end backwards so that we don't replace the trailing space/newline - range.moveEndBackwards(moveEnd); + // If the end is a trailing space/newline move end backwards, so that we don't replace it + if (["\n", " "].includes(emoticonMatch[0][emoticonMatch[0].length - 1])) { + range.moveEndBackwards(1); + } // this returns the amount of added/removed characters during the replace // so the caret position can be adjusted.