X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fvideos%2Fshared%2Fvideo.model.ts;h=0cf4039df312b5f33a1d354710af7d50747db2a5;hb=8635a2c70cc24a4c52558162ac058de95750271f;hp=f135ca707e77f795214bb22f3ee9dd1a3275f882;hpb=db216afd980846c418a4ebab8190c3ead561dfc1;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 f135ca707..0cf4039df 100644 --- a/client/src/app/videos/shared/video.model.ts +++ b/client/src/app/videos/shared/video.model.ts @@ -1,14 +1,19 @@ +import { Video as VideoServerModel } from '../../../../../shared'; import { User } from '../../shared'; -export class Video { +export class Video implements VideoServerModel { author: string; by: string; createdAt: Date; categoryLabel: string; + category: number; licenceLabel: string; + licence: number; languageLabel: string; + language: number; description: string; - duration: string; + duration: number; + durationLabel: string; id: string; isLocal: boolean; magnetUri: string; @@ -38,8 +43,11 @@ export class Video { author: string, createdAt: string, categoryLabel: string, + category: number, licenceLabel: string, + licence: number, languageLabel: string; + language: number; description: string, duration: number; id: string, @@ -57,10 +65,14 @@ export class Video { 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.duration = hash.duration; + this.durationLabel = Video.createDurationString(hash.duration); this.id = hash.id; this.isLocal = hash.isLocal; this.magnetUri = hash.magnetUri; @@ -76,12 +88,49 @@ export class Video { this.by = Video.createByString(hash.author, hash.podHost); } - isRemovableBy(user: User) { - return this.isLocal === true && user && this.author === user.username; + 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)); } + + 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 + }; + } }