author: string
by: string
createdAt: Date
+ updatedAt: Date
categoryLabel: string
category: number
licenceLabel: string
description: string
duration: number
durationLabel: string
- id: string
+ id: number
+ uuid: string
isLocal: boolean
- magnetUri: string
name: string
podHost: string
tags: string[]
thumbnailPath: string
thumbnailUrl: string
+ previewPath: string
+ previewUrl: string
+ embedPath: string
+ embedUrl: string
views: number
likes: number
dislikes: number
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: string,
- isLocal: boolean,
- magnetUri: string,
- name: string,
- podHost: string,
- tags: string[],
- thumbnailPath: 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
this.duration = hash.duration
this.durationLabel = Video.createDurationString(hash.duration)
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 = 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.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
- }
- }
}