+ 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
+ }