X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fvideos%2Fshared%2Fvideo.model.ts;h=7f28710328daceeb661d29aa4f08840a6dc64043;hb=fd45e8f43c2638478599ca75632518054461da85;hp=51c5319eacae0bc0d5b3d72b257efeb0ba0d1b64;hpb=d8755eed1e452d2efbfc983af0e9d228d152bf6b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/videos/shared/video.model.ts b/client/src/app/videos/shared/video.model.ts index 51c5319ea..7f2871032 100644 --- a/client/src/app/videos/shared/video.model.ts +++ b/client/src/app/videos/shared/video.model.ts @@ -1,6 +1,5 @@ -import { Video as VideoServerModel, VideoFile } from '../../../../../shared' +import { Video as VideoServerModel } from '../../../../../shared' import { User } from '../../shared' -import { VideoResolution } from '../../../../../shared/models/videos/video-resolution.enum' export class Video implements VideoServerModel { author: string @@ -32,7 +31,6 @@ export class Video implements VideoServerModel { likes: number dislikes: number nsfw: boolean - files: VideoFile[] private static createByString (author: string, podHost: string) { return author + '@' + podHost @@ -47,32 +45,13 @@ export class Video implements VideoServerModel { return minutesPadding + minutes.toString() + ':' + secondsPadding + seconds.toString() } - constructor (hash: { - author: string, - createdAt: Date | string, - categoryLabel: string, - category: number, - licenceLabel: string, - licence: number, - languageLabel: string - language: number - description: string, - duration: number - id: number, - uuid: string, - isLocal: boolean, - name: string, - podHost: string, - tags: string[], - thumbnailPath: string, - previewPath: string, - embedPath: string, - views: number, - likes: number, - dislikes: number, - nsfw: boolean, - files: VideoFile[] - }) { + constructor (hash: VideoServerModel) { + let absoluteAPIUrl = API_URL + if (!absoluteAPIUrl) { + // The API is on the same domain + absoluteAPIUrl = window.location.origin + } + this.author = hash.author this.createdAt = new Date(hash.createdAt.toString()) this.categoryLabel = hash.categoryLabel @@ -91,78 +70,21 @@ export class Video implements VideoServerModel { this.podHost = hash.podHost this.tags = hash.tags this.thumbnailPath = hash.thumbnailPath - this.thumbnailUrl = API_URL + hash.thumbnailPath + this.thumbnailUrl = absoluteAPIUrl + hash.thumbnailPath this.previewPath = hash.previewPath - this.previewUrl = API_URL + hash.previewPath + this.previewUrl = absoluteAPIUrl + hash.previewPath this.embedPath = hash.embedPath - this.embedUrl = API_URL + hash.embedPath + this.embedUrl = absoluteAPIUrl + hash.embedPath this.views = hash.views this.likes = hash.likes this.dislikes = hash.dislikes this.nsfw = hash.nsfw - this.files = hash.files this.by = Video.createByString(hash.author, hash.podHost) } - isRemovableBy (user) { - return user && this.isLocal === true && (this.author === user.username || user.isAdmin() === true) - } - - isBlackistableBy (user) { - return user && user.isAdmin() === true && this.isLocal === false - } - - isUpdatableBy (user) { - return user && this.isLocal === true && user.username === this.author - } - isVideoNSFWForUser (user: User) { // If the video is NSFW and the user is not logged in, or the user does not want to display NSFW videos... return (this.nsfw && (!user || user.displayNSFW === false)) } - - getAppropriateMagnetUri (actualDownloadSpeed = 0) { - if (this.files === undefined || this.files.length === 0) return '' - if (this.files.length === 1) return this.files[0].magnetUri - - // Find first video that is good for our download speed (remember they are sorted) - let betterResolutionFile = this.files.find(f => actualDownloadSpeed > (f.size / this.duration)) - - // If the download speed is too bad, return the lowest resolution we have - if (betterResolutionFile === undefined) { - betterResolutionFile = this.files.find(f => f.resolution === VideoResolution.H_240P) - } - - return betterResolutionFile.magnetUri - } - - patch (values: Object) { - Object.keys(values).forEach((key) => { - this[key] = values[key] - }) - } - - toJSON () { - return { - author: this.author, - createdAt: this.createdAt, - category: this.category, - licence: this.licence, - language: this.language, - description: this.description, - duration: this.duration, - id: this.id, - isLocal: this.isLocal, - name: this.name, - podHost: this.podHost, - tags: this.tags, - thumbnailPath: this.thumbnailPath, - views: this.views, - likes: this.likes, - dislikes: this.dislikes, - nsfw: this.nsfw, - files: this.files - } - } }