diff --git a/src/components/views/elements/ReplyThread.js b/src/components/views/elements/ReplyThread.js
index 059df7a01c..650a3845e3 100644
--- a/src/components/views/elements/ReplyThread.js
+++ b/src/components/views/elements/ReplyThread.js
@@ -162,11 +162,12 @@ export default class ReplyThread extends React.Component {
}
html = `
In reply to `
- + `${ev.getSender()} ${html || body}
`;
- // `<${ev.getSender()}> ${html || body}`;
- const lines = body.split('\n');
- const first = `> <${ev.getSender()}> ${lines.shift()}`;
- body = first + lines.map((line) => `> ${line}`).join('\n') + '\n';
+ + `${ev.getSender()}
${html || body}`;
+ const lines = body.trim().split('\n');
+ if (lines.length > 0) {
+ lines[0] = `<${ev.getSender()}> ${lines[0]}`;
+ body = lines.map((line) => `> ${line}`).join('\n') + '\n\n';
+ }
return {body, html};
}
diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js
index 1b3299ab94..956091215f 100644
--- a/src/components/views/rooms/MessageComposerInput.js
+++ b/src/components/views/rooms/MessageComposerInput.js
@@ -753,10 +753,15 @@ export default class MessageComposerInput extends React.Component {
return true;
}
+ const replyingToEv = RoomViewStore.getQuotingEvent();
+ const mustSendHTML = Boolean(replyingToEv);
+
if (this.state.isRichtextEnabled) {
// We should only send HTML if any block is styled or contains inline style
let shouldSendHTML = false;
+ if (mustSendHTML) shouldSendHTML = true;
+
const blocks = contentState.getBlocksAsArray();
if (blocks.some((block) => block.getType() !== 'unstyled')) {
shouldSendHTML = true;
@@ -815,7 +820,7 @@ export default class MessageComposerInput extends React.Component {
const md = new Markdown(pt);
// if contains no HTML and we're not quoting (needing HTML)
- if (md.isPlainText()) {
+ if (md.isPlainText() && !mustSendHTML) {
contentText = md.toPlaintext();
} else {
contentHTML = md.toHTML();
@@ -830,8 +835,6 @@ export default class MessageComposerInput extends React.Component {
this.state.isRichtextEnabled ? 'html' : 'markdown',
);
- const replyingToEv = RoomViewStore.getQuotingEvent();
-
if (contentText.startsWith('/me')) {
if (replyingToEv) {
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
@@ -850,7 +853,7 @@ export default class MessageComposerInput extends React.Component {
}
- let content = contentHTML || replyingToEv ? sendHtmlFn(contentText, contentHTML) : sendTextFn(contentText);
+ let content = contentHTML ? sendHtmlFn(contentText, contentHTML) : sendTextFn(contentText);
if (replyingToEv) {
const replyContent = ReplyThread.getReplyEvContent(replyingToEv);