]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Convert markdown to html/plain text for feeds
authorChocobozzz <me@florianbigard.com>
Mon, 31 Jan 2022 09:07:38 +0000 (10:07 +0100)
committerChocobozzz <me@florianbigard.com>
Mon, 31 Jan 2022 09:07:38 +0000 (10:07 +0100)
server/controllers/feeds.ts
server/helpers/markdown.ts
server/tests/feeds/feeds.ts

index 29502a15458d8fd91aba60b893a5dd5e32f0bab4..3c8680ca45bf4fb6a19c37b89d76dcddb3351bb1 100644 (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(),
index ebf479b98c1c8208f2dbf3ba3234019a29686ca7..0b8c2fabce82e09689042d9e517cb6e751353826 100644 (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
index 24a518342fa030aa19375a7acd3fd239513c7bcb..74cbaeb6de3c592c677eb299794d032cd7bfc49b 100644 (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>')
       }
     })