X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=inline;f=client%2Fsrc%2Fapp%2Fvideos%2Fshared%2Fvideo.model.ts;h=404e3bf45fea496ac0ca3e29dac42190085a3e9a;hb=d8e689b864749648d03cf4391fd4a475126f01cd;hp=8e676708b2908373a10eb6536a11f8f42beff61d;hpb=05a9feaa48cea560abd9561434a3479ab1021643;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 8e676708b..404e3bf45 100644 --- a/client/src/app/videos/shared/video.model.ts +++ b/client/src/app/videos/shared/video.model.ts @@ -1,7 +1,15 @@ +import { User } from '../../shared'; + export class Video { author: string; by: string; createdAt: Date; + categoryLabel: string; + category: string; + licenceLabel: string; + licence: string; + languageLabel: string; + language: string; description: string; duration: string; id: string; @@ -12,6 +20,9 @@ export class Video { tags: string[]; thumbnailPath: string; views: number; + likes: number; + dislikes: number; + nsfw: boolean; private static createByString(author: string, podHost: string) { return author + '@' + podHost; @@ -29,6 +40,12 @@ export class Video { constructor(hash: { author: string, createdAt: string, + categoryLabel: string, + category: string, + licenceLabel: string, + licence: string, + languageLabel: string; + language: string; description: string, duration: number; id: string, @@ -38,10 +55,19 @@ export class Video { podHost: string, tags: string[], thumbnailPath: string, - views: number + views: number, + likes: number, + dislikes: number, + nsfw: boolean }) { this.author = hash.author; this.createdAt = new Date(hash.createdAt); + this.categoryLabel = hash.categoryLabel; + this.category = hash.category; + this.licenceLabel = hash.licenceLabel; + this.licence = hash.licence; + this.languageLabel = hash.languageLabel; + this.language = hash.language; this.description = hash.description; this.duration = Video.createDurationString(hash.duration); this.id = hash.id; @@ -52,11 +78,48 @@ export class Video { this.tags = hash.tags; this.thumbnailPath = hash.thumbnailPath; this.views = hash.views; + this.likes = hash.likes; + this.dislikes = hash.dislikes; + this.nsfw = hash.nsfw; this.by = Video.createByString(hash.author, hash.podHost); } - isRemovableBy(user) { + isRemovableBy(user: User) { return this.isLocal === true && user && this.author === user.username; } + + 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)); + } + + 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, + magnetUri: this.magnetUri, + name: this.name, + podHost: this.podHost, + tags: this.tags, + thumbnailPath: this.thumbnailPath, + views: this.views, + likes: this.likes, + dislikes: this.dislikes, + nsfw: this.nsfw + }; + } }