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:
parent
63f4b13281
commit
c73e83da28
4 changed files with 36 additions and 17 deletions
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue