X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fvideos%2Fshared%2Fvideo.model.ts;h=7f28710328daceeb661d29aa4f08840a6dc64043;hb=fd45e8f43c2638478599ca75632518054461da85;hp=3eef936eba59ac6f8f00e6c9e4907a3c15b855c8;hpb=d38b82810638b9f664c9016fac2684454c273a77;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/videos/shared/video.model.ts b/client/src/app/videos/shared/video.model.ts index 3eef936eb..7f2871032 100644 --- a/client/src/app/videos/shared/video.model.ts +++ b/client/src/app/videos/shared/video.model.ts @@ -1,68 +1,90 @@ -export class Video { - author: string; - by: string; - createdAt: Date; - description: string; - duration: string; - id: string; - isLocal: boolean; - magnetUri: string; - name: string; - podHost: string; - tags: string[]; - thumbnailPath: string; - views: number; - likes: number; - dislikes: number; +import { Video as VideoServerModel } from '../../../../../shared' +import { User } from '../../shared' - private static createByString(author: string, podHost: string) { - return author + '@' + podHost; +export class Video implements VideoServerModel { + author: string + by: string + createdAt: Date + updatedAt: Date + categoryLabel: string + category: number + licenceLabel: string + licence: number + languageLabel: string + language: number + description: string + duration: number + durationLabel: string + id: number + uuid: string + isLocal: boolean + name: string + podHost: string + tags: string[] + thumbnailPath: string + thumbnailUrl: string + previewPath: string + previewUrl: string + embedPath: string + embedUrl: string + views: number + likes: number + dislikes: number + nsfw: boolean + + private static createByString (author: string, podHost: string) { + return author + '@' + podHost } - private static createDurationString(duration: number) { - const minutes = Math.floor(duration / 60); - const seconds = duration % 60; - const minutes_padding = minutes >= 10 ? '' : '0'; - const seconds_padding = seconds >= 10 ? '' : '0'; + private static createDurationString (duration: number) { + const minutes = Math.floor(duration / 60) + const seconds = duration % 60 + const minutesPadding = minutes >= 10 ? '' : '0' + const secondsPadding = seconds >= 10 ? '' : '0' - return minutes_padding + minutes.toString() + ':' + seconds_padding + seconds.toString(); + return minutesPadding + minutes.toString() + ':' + secondsPadding + seconds.toString() } - constructor(hash: { - author: string, - createdAt: string, - description: string, - duration: number; - id: string, - isLocal: boolean, - magnetUri: string, - name: string, - podHost: string, - tags: string[], - thumbnailPath: string, - views: number, - likes: number, - dislikes: number, - }) { - this.author = hash.author; - this.createdAt = new Date(hash.createdAt); - this.description = hash.description; - this.duration = Video.createDurationString(hash.duration); - this.id = hash.id; - 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.views = hash.views; - this.likes = hash.likes; - this.dislikes = hash.dislikes; + 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.toString()) + 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 = hash.duration + this.durationLabel = Video.createDurationString(hash.duration) + this.id = hash.id + this.uuid = hash.uuid + this.isLocal = hash.isLocal + this.name = hash.name + this.podHost = hash.podHost + this.tags = hash.tags + this.thumbnailPath = 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.nsfw = hash.nsfw - this.by = Video.createByString(hash.author, hash.podHost); + this.by = Video.createByString(hash.author, hash.podHost) } - isRemovableBy(user) { - return this.isLocal === true && user && this.author === user.username; + 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)) } }