1
0
Fork 0

Convert markdown to html/plain text for feeds

This commit is contained in:
Chocobozzz 2022-01-31 10:07:38 +01:00
parent ebe4b3df5c
commit 228d8e8e47
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 9 additions and 8 deletions

View File

@ -1,5 +1,6 @@
import express from 'express'
import Feed from 'pfeed'
import { mdToPlainText, toSafeHtml } from '@server/helpers/markdown'
import { getServerActor } from '@server/models/application/application'
import { getCategoryLabel } from '@server/models/video/formatter/video-format-utils'
import { VideoInclude } from '@shared/models'
@ -119,7 +120,7 @@ async function generateVideoCommentsFeed (req: express.Request, res: express.Res
title,
id: comment.url,
link,
content: comment.text,
content: toSafeHtml(comment.text),
author,
date: comment.createdAt
})
@ -235,7 +236,7 @@ function initFeed (parameters: {
return new Feed({
title: name,
description,
description: mdToPlainText(description),
// updated: TODO: somehowGetLatestUpdate, // optional, default = today
id: webserverUrl,
link: webserverUrl,
@ -298,8 +299,8 @@ function addVideosToFeed (feed, videos: VideoModel[]) {
title: video.name,
id: video.url,
link: WEBSERVER.URL + video.getWatchStaticPath(),
description: video.getTruncatedDescription(),
content: video.description,
description: mdToPlainText(video.getTruncatedDescription()),
content: toSafeHtml(video.description),
author: [
{
name: video.VideoChannel.Account.getDisplayName(),

View File

@ -10,7 +10,7 @@ const markdownIt = new MarkdownItClass('default', { linkify: true, breaks: true,
markdownIt.enable(TEXT_WITH_HTML_RULES)
markdownIt.use(markdownItEmoji)
const toSafeHtml = text => {
const toSafeHtml = (text: string) => {
if (!text) return ''
// Restore line feed
@ -23,7 +23,7 @@ const toSafeHtml = text => {
return sanitizeHtml(html, sanitizeOptions)
}
const mdToPlainText = text => {
const mdToPlainText = (text: string) => {
if (!text) return ''
// Convert possible markdown (emojis, emphasis and lists) to html

View File

@ -274,8 +274,8 @@ describe('Test syndication feeds', () => {
const jsonObj = JSON.parse(json)
expect(jsonObj.items.length).to.be.equal(2)
expect(jsonObj.items[0].html_content).to.equal('super comment 2')
expect(jsonObj.items[1].html_content).to.equal('super comment 1')
expect(jsonObj.items[0].html_content).to.contain('<p>super comment 2</p>')
expect(jsonObj.items[1].html_content).to.contain('<p>super comment 1</p>')
}
})