aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/video
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-03-28 11:00:02 +0200
committerChocobozzz <me@florianbigard.com>2018-03-28 11:00:02 +0200
commitc73e83da283c6d4eb094e384d59c4f8eb221507d (patch)
tree3614954f10ffdb9048bdd10759d1a7f19925b5e9 /server/models/video
parent63f4b132817bfc4d5be4f89077b5a42b97b11a7c (diff)
downloadPeerTube-c73e83da283c6d4eb094e384d59c4f8eb221507d.tar.gz
PeerTube-c73e83da283c6d4eb094e384d59c4f8eb221507d.tar.zst
PeerTube-c73e83da283c6d4eb094e384d59c4f8eb221507d.zip
Truncate correctly video descriptions
Diffstat (limited to 'server/models/video')
-rw-r--r--server/models/video/video.ts21
1 files changed, 6 insertions, 15 deletions
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index a28b5209b..7c56c65a6 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -1,5 +1,5 @@
1import * as Bluebird from 'bluebird' 1import * as Bluebird from 'bluebird'
2import { map, maxBy, truncate } from 'lodash' 2import { map, maxBy } from 'lodash'
3import * as magnetUtil from 'magnet-uri' 3import * as magnetUtil from 'magnet-uri'
4import * as parseTorrent from 'parse-torrent' 4import * as parseTorrent from 'parse-torrent'
5import { join } from 'path' 5import { join } from 'path'
@@ -31,7 +31,10 @@ import { VideoTorrentObject } from '../../../shared/models/activitypub/objects'
31import { Video, VideoDetails } from '../../../shared/models/videos' 31import { Video, VideoDetails } from '../../../shared/models/videos'
32import { VideoFilter } from '../../../shared/models/videos/video-query.type' 32import { VideoFilter } from '../../../shared/models/videos/video-query.type'
33import { activityPubCollection } from '../../helpers/activitypub' 33import { activityPubCollection } from '../../helpers/activitypub'
34import { createTorrentPromise, renamePromise, statPromise, unlinkPromise, writeFilePromise } from '../../helpers/core-utils' 34import {
35 createTorrentPromise, peertubeTruncate, renamePromise, statPromise, unlinkPromise,
36 writeFilePromise
37} from '../../helpers/core-utils'
35import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' 38import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
36import { isBooleanValid } from '../../helpers/custom-validators/misc' 39import { isBooleanValid } from '../../helpers/custom-validators/misc'
37import { 40import {
@@ -1191,19 +1194,7 @@ export class VideoModel extends Model<VideoModel> {
1191 if (!this.description) return null 1194 if (!this.description) return null
1192 1195
1193 const maxLength = CONSTRAINTS_FIELDS.VIDEOS.TRUNCATED_DESCRIPTION.max 1196 const maxLength = CONSTRAINTS_FIELDS.VIDEOS.TRUNCATED_DESCRIPTION.max
1194 1197 return peertubeTruncate(this.description, maxLength)
1195 const options = {
1196 length: maxLength
1197 }
1198 const truncatedDescription = truncate(this.description, options)
1199
1200 // The truncated string is okay, we can return it
1201 if (truncatedDescription.length <= maxLength) return truncatedDescription
1202
1203 // Lodash takes into account all UTF characters, whereas String.prototype.length does not: some characters have a length of 2
1204 // We always use the .length so we need to truncate more if needed
1205 options.length -= maxLength - truncatedDescription.length
1206 return truncate(this.description, options)
1207 } 1198 }
1208 1199
1209 optimizeOriginalVideofile = async function () { 1200 optimizeOriginalVideofile = async function () {