]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/videos/shared/video.model.ts
Add video privacy setting
[github/Chocobozzz/PeerTube.git] / client / src / app / videos / shared / video.model.ts
index f0556343f5045c2ac70b5be795804c3de5e2800a..7f28710328daceeb661d29aa4f08840a6dc64043 100644 (file)
@@ -5,6 +5,7 @@ export class Video implements VideoServerModel {
   author: string
   by: string
   createdAt: Date
+  updatedAt: Date
   categoryLabel: string
   category: number
   licenceLabel: string
@@ -17,7 +18,6 @@ export class Video implements VideoServerModel {
   id: number
   uuid: string
   isLocal: boolean
-  magnetUri: string
   name: string
   podHost: string
   tags: string[]
@@ -25,6 +25,8 @@ export class Video implements VideoServerModel {
   thumbnailUrl: string
   previewPath: string
   previewUrl: string
+  embedPath: string
+  embedUrl: string
   views: number
   likes: number
   dislikes: number
@@ -43,33 +45,15 @@ export class Video implements VideoServerModel {
     return minutesPadding + minutes.toString() + ':' + secondsPadding + seconds.toString()
   }
 
-  constructor (hash: {
-    author: string,
-    createdAt: string,
-    categoryLabel: string,
-    category: number,
-    licenceLabel: string,
-    licence: number,
-    languageLabel: string
-    language: number
-    description: string,
-    duration: number
-    id: number,
-    uuid: string,
-    isLocal: boolean,
-    magnetUri: string,
-    name: string,
-    podHost: string,
-    tags: string[],
-    thumbnailPath: string,
-    previewPath: string,
-    views: number,
-    likes: number,
-    dislikes: number,
-    nsfw: boolean
-  }) {
+  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)
+    this.createdAt = new Date(hash.createdAt.toString())
     this.categoryLabel = hash.categoryLabel
     this.category = hash.category
     this.licenceLabel = hash.licenceLabel
@@ -82,14 +66,15 @@ export class Video implements VideoServerModel {
     this.id = hash.id
     this.uuid = hash.uuid
     this.isLocal = hash.isLocal
-    this.magnetUri = hash.magnetUri
     this.name = hash.name
     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
@@ -98,49 +83,8 @@ export class Video implements VideoServerModel {
     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))
   }
-
-  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
-    }
-  }
 }