1
0
Fork 0
mirror of https://github.com/Chocobozzz/PeerTube.git synced 2025-10-05 02:39:33 +02:00

Truncate correctly video descriptions

This commit is contained in:
Chocobozzz 2018-03-28 11:00:02 +02:00
parent 63f4b13281
commit c73e83da28
No known key found for this signature in database
GPG key ID: 583A612D890159BE
4 changed files with 36 additions and 17 deletions

View file

@ -12,6 +12,7 @@ import { isAbsolute, join } from 'path'
import * as pem from 'pem'
import * as rimraf from 'rimraf'
import { URL } from 'url'
import { truncate } from 'lodash'
function sanitizeUrl (url: string) {
const urlObject = new URL(url)
@ -78,6 +79,22 @@ function buildPath (path: string) {
return join(root(), path)
}
// Consistent with .length, lodash truncate function is not
function peertubeTruncate (str: string, maxLength: number) {
const options = {
length: maxLength
}
const truncatedStr = truncate(str, options)
// The truncated string is okay, we can return it
if (truncatedStr.length <= maxLength) return truncatedStr
// Lodash takes into account all UTF characters, whereas String.prototype.length does not: some characters have a length of 2
// We always use the .length so we need to truncate more if needed
options.length -= truncatedStr.length - maxLength
return truncate(str, options)
}
function promisify0<A> (func: (cb: (err: any, result: A) => void) => void): () => Promise<A> {
return function promisified (): Promise<A> {
return new Promise<A>((resolve: (arg: A) => void, reject: (err: any) => void) => {
@ -145,6 +162,7 @@ export {
sanitizeUrl,
sanitizeHost,
buildPath,
peertubeTruncate,
promisify0,
promisify1,