import { User } from '../'
-import { PlaylistElement, UserRight, Video as VideoServerModel, VideoPrivacy, VideoState } from '../../../../../shared'
+import { UserRight, Video as VideoServerModel, VideoPrivacy, VideoState } from '../../../../../shared'
import { Avatar } from '../../../../../shared/models/avatars/avatar.model'
import { VideoConstant } from '../../../../../shared/models/videos/video-constant.model'
import { durationToString, getAbsoluteAPIUrl } from '../misc/utils'
serverHost: string
thumbnailPath: string
thumbnailUrl: string
+
previewPath: string
previewUrl: string
+
embedPath: string
embedUrl: string
+
+ url?: string
+
views: number
likes: number
dislikes: number
nsfw: boolean
+ originInstanceUrl: string
+ originInstanceHost: string
+
waitTranscoding?: boolean
state?: VideoConstant<VideoState>
scheduledUpdate?: VideoScheduleUpdate
blacklisted?: boolean
- blacklistedReason?: string
-
- playlistElement?: PlaylistElement
+ blockedReason?: string
account: {
id: number
- uuid: string
name: string
displayName: string
url: string
channel: {
id: number
- uuid: string
name: string
displayName: string
url: string
this.waitTranscoding = hash.waitTranscoding
this.state = hash.state
this.description = hash.description
+
this.duration = hash.duration
this.durationLabel = durationToString(hash.duration)
+
this.id = hash.id
this.uuid = hash.uuid
+
this.isLocal = hash.isLocal
this.name = hash.name
+
this.thumbnailPath = hash.thumbnailPath
- this.thumbnailUrl = absoluteAPIUrl + hash.thumbnailPath
+ this.thumbnailUrl = hash.thumbnailUrl || (absoluteAPIUrl + hash.thumbnailPath)
+
this.previewPath = hash.previewPath
- this.previewUrl = absoluteAPIUrl + hash.previewPath
+ this.previewUrl = hash.previewUrl || (absoluteAPIUrl + hash.previewPath)
+
this.embedPath = hash.embedPath
- this.embedUrl = absoluteAPIUrl + hash.embedPath
+ this.embedUrl = hash.embedUrl || (absoluteAPIUrl + hash.embedPath)
+
+ this.url = hash.url
+
this.views = hash.views
this.likes = hash.likes
this.dislikes = hash.dislikes
+
this.nsfw = hash.nsfw
+
this.account = hash.account
this.channel = hash.channel
if (this.state) this.state.label = peertubeTranslate(this.state.label, translations)
this.blacklisted = hash.blacklisted
- this.blacklistedReason = hash.blacklistedReason
+ this.blockedReason = hash.blacklistedReason
this.userHistory = hash.userHistory
- this.playlistElement = hash.playlistElement
+ this.originInstanceHost = this.account.host
+ this.originInstanceUrl = 'https://' + this.originInstanceHost
}
isVideoNSFWForUser (user: User, serverConfig: ServerConfig) {
return user && this.isLocal === true && (this.account.name === user.username || user.hasRight(UserRight.REMOVE_ANY_VIDEO))
}
- isBlackistableBy (user: AuthUser) {
- return this.blacklisted !== true && user && user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) === true
+ isBlockableBy (user: AuthUser) {
+ return this.blacklisted !== true && user && user.hasRight(UserRight.MANAGE_VIDEO_BLOCKS) === true
}
- isUnblacklistableBy (user: AuthUser) {
- return this.blacklisted === true && user && user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) === true
+ isUnblockableBy (user: AuthUser) {
+ return this.blacklisted === true && user && user.hasRight(UserRight.MANAGE_VIDEO_BLOCKS) === true
}
isUpdatableBy (user: AuthUser) {
return user && this.isLocal === true && (this.account.name === user.username || user.hasRight(UserRight.UPDATE_ANY_VIDEO))
}
+
+ canBeDuplicatedBy (user: AuthUser) {
+ return user && this.isLocal === false && user.hasRight(UserRight.MANAGE_VIDEOS_REDUNDANCIES)
+ }
}