]> 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 438791368d3f77e427493d3522f3da4761310f26..7f28710328daceeb661d29aa4f08840a6dc64043 100644 (file)
@@ -1,10 +1,11 @@
-import { Video as VideoServerModel, VideoFile } from '../../../../../shared'
+import { Video as VideoServerModel } from '../../../../../shared'
 import { User } from '../../shared'
 
 export class Video implements VideoServerModel {
   author: string
   by: string
   createdAt: Date
+  updatedAt: Date
   categoryLabel: string
   category: number
   licenceLabel: string
@@ -24,11 +25,12 @@ export class Video implements VideoServerModel {
   thumbnailUrl: string
   previewPath: string
   previewUrl: string
+  embedPath: string
+  embedUrl: string
   views: number
   likes: number
   dislikes: number
   nsfw: boolean
-  files: VideoFile[]
 
   private static createByString (author: string, podHost: string) {
     return author + '@' + podHost
@@ -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,
-    name: string,
-    podHost: string,
-    tags: string[],
-    thumbnailPath: string,
-    previewPath: string,
-    views: number,
-    likes: number,
-    dislikes: number,
-    nsfw: boolean,
-    files: VideoFile[]
-  }) {
+  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
@@ -86,68 +70,21 @@ export class Video implements VideoServerModel {
     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
     this.nsfw = hash.nsfw
-    this.files = hash.files
 
     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))
   }
-
-  getDefaultMagnetUri () {
-    if (this.files === undefined || this.files.length === 0) return ''
-
-    // TODO: choose the original file
-    return this.files[0].magnetUri
-  }
-
-  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,
-      name: this.name,
-      podHost: this.podHost,
-      tags: this.tags,
-      thumbnailPath: this.thumbnailPath,
-      views: this.views,
-      likes: this.likes,
-      dislikes: this.dislikes,
-      nsfw: this.nsfw,
-      files: this.files
-    }
-  }
 }