+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;
author: string,
createdAt: string,
categoryLabel: string,
+ category: number,
licenceLabel: string,
+ licence: number,
languageLabel: string;
+ language: number;
description: string,
duration: number;
id: string,
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;
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
+ };
+ }
}