Pass through breaks option to published note

The markdown for the publish-view is generated
using the `Note.extractMeta` method.
It uses meta-marked to separate the metadata from markdown.
Only the raw markdown is then sent to the client,
so it cannot respect the `breaks` option.

This adds an evil hack to send the `breaks` option with the markdown
if it is contained in the metadata block.

Fixes https://github.com/hedgedoc/hedgedoc/issues/2358

Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
David Mehren 2022-10-03 14:19:44 +02:00
parent a71b4923e7
commit 3aeb2a619b
2 changed files with 7 additions and 1 deletions

View file

@ -90,8 +90,13 @@ exports.newNote = async function (req, res, body) {
exports.getPublishData = function (req, res, note, callback) {
const body = note.content
const extracted = models.Note.extractMeta(body)
const markdown = extracted.markdown
let markdown = extracted.markdown
const meta = models.Note.parseMeta(extracted.meta)
// extractMeta() will remove the meta part from markdown,
// so we need to re-add the `breaks` option for proper rendering
if (typeof extracted.meta.breaks === 'boolean') {
markdown = '---\nbreaks: ' + extracted.meta.breaks + '\n---\n' + markdown
}
const createtime = note.createdAt
const updatetime = note.lastchangeAt
let title = models.Note.decodeTitle(note.title)