X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fvideos%2Fshared%2Fvideo.model.ts;h=7f28710328daceeb661d29aa4f08840a6dc64043;hb=fd45e8f43c2638478599ca75632518054461da85;hp=17f41059d0be37778002a07d487d7971d708769f;hpb=d592e0a9b2931c7c9cbedb27fb8efc9aaacad9bb;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 17f41059d..7f2871032 100644 --- a/client/src/app/videos/shared/video.model.ts +++ b/client/src/app/videos/shared/video.model.ts @@ -1,4 +1,4 @@ -import { Video as VideoServerModel, VideoFile } from '../../../../../shared' +import { Video as VideoServerModel } from '../../../../../shared' import { User } from '../../shared' export class Video implements VideoServerModel { @@ -25,11 +25,12 @@ export class Video implements VideoServerModel { thumbnailUrl: string previewPath: string previewUrl: string + embedPath: string + embedUrl: string views: number likes: number dislikes: number nsfw: boolean - files: VideoFile[] private static createByString (author: string, podHost: string) { return author + '@' + podHost @@ -44,31 +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, - 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 @@ -87,68 +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 = 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)) } - - getDefaultMagnetUri () { - if (this.files === undefined || this.files.length === 0) return '' - - // TODO: choose the original file - return this.files[0].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 - } - } }