mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-20 15:26:06 +08:00
When replying to plain email using the rich editor, convert quoted text to HTML #1853
This commit is contained in:
parent
01765c47da
commit
3a8d1b6f3f
|
@ -110,3 +110,10 @@ export function wrapPlaintextWithSelection(
|
|||
selectionEnd: resultSelectionEnd,
|
||||
};
|
||||
}
|
||||
|
||||
export function convertPlaintextToHTML(plain: string) {
|
||||
const div = document.createElement('div');
|
||||
div.innerText = plain;
|
||||
div.style.whiteSpace = 'pre-wrap';
|
||||
return div.outerHTML;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,11 @@ import SanitizeTransformer from '../../services/sanitize-transformer';
|
|||
import DOMUtils from '../../dom-utils';
|
||||
import { Thread } from '../models/Thread';
|
||||
import { convertToPlainText, convertFromHTML } from '../../components/composer-editor/conversion';
|
||||
import { wrapPlaintext, deepenPlaintextQuote } from '../../components/composer-editor/plaintext';
|
||||
import {
|
||||
wrapPlaintext,
|
||||
deepenPlaintextQuote,
|
||||
convertPlaintextToHTML,
|
||||
} from '../../components/composer-editor/plaintext';
|
||||
|
||||
let DraftStore: typeof import('./draft-store').default = null;
|
||||
|
||||
|
@ -31,18 +35,21 @@ class DraftFactory {
|
|||
|
||||
async prepareBodyForQuoting(message: Message) {
|
||||
if (!this.useHTML()) {
|
||||
return deepenPlaintextQuote(
|
||||
message.plaintext ? message.body : convertToPlainText(convertFromHTML(message.body)).trim()
|
||||
);
|
||||
const content = message.plaintext
|
||||
? message.body
|
||||
: convertToPlainText(convertFromHTML(message.body)).trim();
|
||||
return deepenPlaintextQuote(content);
|
||||
}
|
||||
|
||||
const content = message.plaintext ? convertPlaintextToHTML(message.body) : message.body;
|
||||
|
||||
// TODO: Fix inline images
|
||||
const cidRE = MessageUtils.cidRegexString;
|
||||
const cidRegexp = new RegExp(`<img.*${cidRE}[\\s\\S]*?>`, 'igm');
|
||||
|
||||
// Be sure to match over multiple lines with [\s\S]*
|
||||
// Regex explanation here: https://regex101.com/r/vO6eN2/1
|
||||
let transformed = (message.body || '').replace(cidRegexp, '');
|
||||
let transformed = (content || '').replace(cidRegexp, '');
|
||||
transformed = await SanitizeTransformer.run(transformed, SanitizeTransformer.Preset.UnsafeOnly);
|
||||
transformed = await InlineStyleTransformer.run(transformed);
|
||||
return transformed;
|
||||
|
|
Loading…
Reference in a new issue