diff options
author | Rigel Kent <sendmemail@rigelk.eu> | 2021-04-11 15:06:36 +0200 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2021-04-13 15:45:09 +0200 |
commit | 84bced652cd72aad852914a4a734c47dd0002fef (patch) | |
tree | fd1b5fb097c0958792be7e89fe1dec621eb0c841 /server/lib/client-html.ts | |
parent | 13fec08ba3e6dff8a4a72163d94cbdb32ad57563 (diff) | |
download | PeerTube-84bced652cd72aad852914a4a734c47dd0002fef.tar.gz PeerTube-84bced652cd72aad852914a4a734c47dd0002fef.tar.zst PeerTube-84bced652cd72aad852914a4a734c47dd0002fef.zip |
render markdown and plainify descriptions on previews
Diffstat (limited to 'server/lib/client-html.ts')
-rw-r--r-- | server/lib/client-html.ts | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/server/lib/client-html.ts b/server/lib/client-html.ts index 6ddaa82c8..5485376d3 100644 --- a/server/lib/client-html.ts +++ b/server/lib/client-html.ts | |||
@@ -24,6 +24,7 @@ import { VideoChannelModel } from '../models/video/video-channel' | |||
24 | import { getActivityStreamDuration } from '../models/video/video-format-utils' | 24 | import { getActivityStreamDuration } from '../models/video/video-format-utils' |
25 | import { VideoPlaylistModel } from '../models/video/video-playlist' | 25 | import { VideoPlaylistModel } from '../models/video/video-playlist' |
26 | import { MAccountActor, MChannelActor } from '../types/models' | 26 | import { MAccountActor, MChannelActor } from '../types/models' |
27 | import { toSafeHtml } from '../helpers/markdown' | ||
27 | 28 | ||
28 | type Tags = { | 29 | type Tags = { |
29 | ogType: string | 30 | ogType: string |
@@ -54,6 +55,10 @@ type Tags = { | |||
54 | } | 55 | } |
55 | } | 56 | } |
56 | 57 | ||
58 | const toPlainText = (content: string) => { | ||
59 | return toSafeHtml(content).replace(/<[^>]+>/g, '') | ||
60 | } | ||
61 | |||
57 | class ClientHtml { | 62 | class ClientHtml { |
58 | 63 | ||
59 | private static htmlCache: { [path: string]: string } = {} | 64 | private static htmlCache: { [path: string]: string } = {} |
@@ -94,13 +99,13 @@ class ClientHtml { | |||
94 | } | 99 | } |
95 | 100 | ||
96 | let customHtml = ClientHtml.addTitleTag(html, escapeHTML(video.name)) | 101 | let customHtml = ClientHtml.addTitleTag(html, escapeHTML(video.name)) |
97 | customHtml = ClientHtml.addDescriptionTag(customHtml, escapeHTML(video.description)) | 102 | customHtml = ClientHtml.addDescriptionTag(customHtml, toPlainText(video.description)) |
98 | 103 | ||
99 | const url = WEBSERVER.URL + video.getWatchStaticPath() | 104 | const url = WEBSERVER.URL + video.getWatchStaticPath() |
100 | const originUrl = video.url | 105 | const originUrl = video.url |
101 | const title = escapeHTML(video.name) | 106 | const title = escapeHTML(video.name) |
102 | const siteName = escapeHTML(CONFIG.INSTANCE.NAME) | 107 | const siteName = escapeHTML(CONFIG.INSTANCE.NAME) |
103 | const description = escapeHTML(video.description) | 108 | const description = toPlainText(video.description) |
104 | 109 | ||
105 | const image = { | 110 | const image = { |
106 | url: WEBSERVER.URL + video.getPreviewStaticPath() | 111 | url: WEBSERVER.URL + video.getPreviewStaticPath() |
@@ -152,13 +157,13 @@ class ClientHtml { | |||
152 | } | 157 | } |
153 | 158 | ||
154 | let customHtml = ClientHtml.addTitleTag(html, escapeHTML(videoPlaylist.name)) | 159 | let customHtml = ClientHtml.addTitleTag(html, escapeHTML(videoPlaylist.name)) |
155 | customHtml = ClientHtml.addDescriptionTag(customHtml, escapeHTML(videoPlaylist.description)) | 160 | customHtml = ClientHtml.addDescriptionTag(customHtml, toPlainText(videoPlaylist.description)) |
156 | 161 | ||
157 | const url = videoPlaylist.getWatchUrl() | 162 | const url = videoPlaylist.getWatchUrl() |
158 | const originUrl = videoPlaylist.url | 163 | const originUrl = videoPlaylist.url |
159 | const title = escapeHTML(videoPlaylist.name) | 164 | const title = escapeHTML(videoPlaylist.name) |
160 | const siteName = escapeHTML(CONFIG.INSTANCE.NAME) | 165 | const siteName = escapeHTML(CONFIG.INSTANCE.NAME) |
161 | const description = escapeHTML(videoPlaylist.description) | 166 | const description = toPlainText(videoPlaylist.description) |
162 | 167 | ||
163 | const image = { | 168 | const image = { |
164 | url: videoPlaylist.getThumbnailUrl() | 169 | url: videoPlaylist.getThumbnailUrl() |
@@ -236,13 +241,13 @@ class ClientHtml { | |||
236 | } | 241 | } |
237 | 242 | ||
238 | let customHtml = ClientHtml.addTitleTag(html, escapeHTML(entity.getDisplayName())) | 243 | let customHtml = ClientHtml.addTitleTag(html, escapeHTML(entity.getDisplayName())) |
239 | customHtml = ClientHtml.addDescriptionTag(customHtml, escapeHTML(entity.description)) | 244 | customHtml = ClientHtml.addDescriptionTag(customHtml, toPlainText(entity.description)) |
240 | 245 | ||
241 | const url = entity.getLocalUrl() | 246 | const url = entity.getLocalUrl() |
242 | const originUrl = entity.Actor.url | 247 | const originUrl = entity.Actor.url |
243 | const siteName = escapeHTML(CONFIG.INSTANCE.NAME) | 248 | const siteName = escapeHTML(CONFIG.INSTANCE.NAME) |
244 | const title = escapeHTML(entity.getDisplayName()) | 249 | const title = escapeHTML(entity.getDisplayName()) |
245 | const description = escapeHTML(entity.description) | 250 | const description = toPlainText(entity.description) |
246 | 251 | ||
247 | const image = { | 252 | const image = { |
248 | url: entity.Actor.getAvatarUrl(), | 253 | url: entity.Actor.getAvatarUrl(), |