import { getAbsoluteAPIUrl, getAbsoluteEmbedUrl } from '@app/helpers'
-import { Account, Actor, VideoChannel } from '@app/shared/shared-main'
+import { Actor } from '@app/shared/shared-main'
+import { buildPlaylistWatchPath } from '@shared/core-utils'
import { peertubeTranslate } from '@shared/core-utils/i18n'
import {
AccountSummary,
export class VideoPlaylist implements ServerVideoPlaylist {
id: number
uuid: string
+ shortUUID: string
+
isLocal: boolean
+ url: string
+
displayName: string
description: string
privacy: VideoConstant<VideoPlaylistPrivacy>
- thumbnailPath: string
-
videosLength: number
type: VideoConstant<VideoPlaylistType>
ownerAccount: AccountSummary
videoChannel?: VideoChannelSummary
+ thumbnailPath: string
thumbnailUrl: string
embedPath: string
videoChannelBy?: string
- private thumbnailVersion: number
- private originThumbnailUrl: string
+ static buildWatchUrl (playlist: Pick<VideoPlaylist, 'uuid' | 'shortUUID'>) {
+ return buildPlaylistWatchPath({ shortUUID: playlist.shortUUID || playlist.uuid })
+ }
- constructor (hash: ServerVideoPlaylist, translations: {}) {
+ constructor (hash: ServerVideoPlaylist, translations: { [ id: string ]: string }) {
const absoluteAPIUrl = getAbsoluteAPIUrl()
this.id = hash.id
this.uuid = hash.uuid
+ this.shortUUID = hash.shortUUID
+
+ this.url = hash.url
this.isLocal = hash.isLocal
this.displayName = hash.displayName
this.thumbnailPath = hash.thumbnailPath
- if (this.thumbnailPath) {
- this.thumbnailUrl = absoluteAPIUrl + hash.thumbnailPath
- this.originThumbnailUrl = this.thumbnailUrl
- } else {
- this.thumbnailUrl = window.location.origin + '/client/assets/images/default-playlist.jpg'
- }
+ this.thumbnailUrl = this.thumbnailPath
+ ? hash.thumbnailUrl || (absoluteAPIUrl + hash.thumbnailPath)
+ : absoluteAPIUrl + '/client/assets/images/default-playlist.jpg'
this.embedPath = hash.embedPath
- this.embedUrl = getAbsoluteEmbedUrl() + hash.embedPath
+ this.embedUrl = hash.embedUrl || (getAbsoluteEmbedUrl() + hash.embedPath)
this.videosLength = hash.videosLength
this.displayName = peertubeTranslate(this.displayName, translations)
}
}
-
- refreshThumbnail () {
- if (!this.originThumbnailUrl) return
-
- if (!this.thumbnailVersion) this.thumbnailVersion = 0
- this.thumbnailVersion++
-
- this.thumbnailUrl = this.originThumbnailUrl + '?v' + this.thumbnailVersion
- }
}