diff options
Diffstat (limited to 'server/models')
-rw-r--r-- | server/models/video/video-playlist-element.ts | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/server/models/video/video-playlist-element.ts b/server/models/video/video-playlist-element.ts index 48f4ed5a9..b832f9768 100644 --- a/server/models/video/video-playlist-element.ts +++ b/server/models/video/video-playlist-element.ts | |||
@@ -309,7 +309,23 @@ export class VideoPlaylistElementModel extends Model<Partial<AttributesOnly<Vide | |||
309 | return VideoPlaylistElementModel.increment({ position: by }, query) | 309 | return VideoPlaylistElementModel.increment({ position: by }, query) |
310 | } | 310 | } |
311 | 311 | ||
312 | getType (this: MVideoPlaylistElementFormattable, displayNSFW?: boolean, accountId?: number) { | 312 | toFormattedJSON ( |
313 | this: MVideoPlaylistElementFormattable, | ||
314 | options: { accountId?: number } = {} | ||
315 | ): VideoPlaylistElement { | ||
316 | return { | ||
317 | id: this.id, | ||
318 | position: this.position, | ||
319 | startTimestamp: this.startTimestamp, | ||
320 | stopTimestamp: this.stopTimestamp, | ||
321 | |||
322 | type: this.getType(options.accountId), | ||
323 | |||
324 | video: this.getVideoElement(options.accountId) | ||
325 | } | ||
326 | } | ||
327 | |||
328 | getType (this: MVideoPlaylistElementFormattable, accountId?: number) { | ||
313 | const video = this.Video | 329 | const video = this.Video |
314 | 330 | ||
315 | if (!video) return VideoPlaylistElementType.DELETED | 331 | if (!video) return VideoPlaylistElementType.DELETED |
@@ -323,34 +339,17 @@ export class VideoPlaylistElementModel extends Model<Partial<AttributesOnly<Vide | |||
323 | if (video.privacy === VideoPrivacy.PRIVATE || video.privacy === VideoPrivacy.INTERNAL) return VideoPlaylistElementType.PRIVATE | 339 | if (video.privacy === VideoPrivacy.PRIVATE || video.privacy === VideoPrivacy.INTERNAL) return VideoPlaylistElementType.PRIVATE |
324 | 340 | ||
325 | if (video.isBlacklisted() || video.isBlocked()) return VideoPlaylistElementType.UNAVAILABLE | 341 | if (video.isBlacklisted() || video.isBlocked()) return VideoPlaylistElementType.UNAVAILABLE |
326 | if (video.nsfw === true && displayNSFW === false) return VideoPlaylistElementType.UNAVAILABLE | ||
327 | 342 | ||
328 | return VideoPlaylistElementType.REGULAR | 343 | return VideoPlaylistElementType.REGULAR |
329 | } | 344 | } |
330 | 345 | ||
331 | getVideoElement (this: MVideoPlaylistElementFormattable, displayNSFW?: boolean, accountId?: number) { | 346 | getVideoElement (this: MVideoPlaylistElementFormattable, accountId?: number) { |
332 | if (!this.Video) return null | 347 | if (!this.Video) return null |
333 | if (this.getType(displayNSFW, accountId) !== VideoPlaylistElementType.REGULAR) return null | 348 | if (this.getType(accountId) !== VideoPlaylistElementType.REGULAR) return null |
334 | 349 | ||
335 | return this.Video.toFormattedJSON() | 350 | return this.Video.toFormattedJSON() |
336 | } | 351 | } |
337 | 352 | ||
338 | toFormattedJSON ( | ||
339 | this: MVideoPlaylistElementFormattable, | ||
340 | options: { displayNSFW?: boolean, accountId?: number } = {} | ||
341 | ): VideoPlaylistElement { | ||
342 | return { | ||
343 | id: this.id, | ||
344 | position: this.position, | ||
345 | startTimestamp: this.startTimestamp, | ||
346 | stopTimestamp: this.stopTimestamp, | ||
347 | |||
348 | type: this.getType(options.displayNSFW, options.accountId), | ||
349 | |||
350 | video: this.getVideoElement(options.displayNSFW, options.accountId) | ||
351 | } | ||
352 | } | ||
353 | |||
354 | toActivityPubObject (this: MVideoPlaylistElementAP): PlaylistElementObject { | 353 | toActivityPubObject (this: MVideoPlaylistElementAP): PlaylistElementObject { |
355 | const base: PlaylistElementObject = { | 354 | const base: PlaylistElementObject = { |
356 | id: this.url, | 355 | id: this.url, |