import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
import { CONSTRAINTS_FIELDS } from '../../initializers/constants'
import { AccountModel } from '../account/account'
-import { getSort, throwIfNotValid } from '../utils'
+import { getSort, throwIfNotValid } from '../shared'
import { ForAPIOptions, ScopeNames as VideoScopeNames, VideoModel } from './video'
import { VideoPlaylistModel } from './video-playlist'
return VideoPlaylistElementModel.increment({ position: by }, query)
}
- getType (this: MVideoPlaylistElementFormattable, displayNSFW?: boolean, accountId?: number) {
+ toFormattedJSON (
+ this: MVideoPlaylistElementFormattable,
+ options: { accountId?: number } = {}
+ ): VideoPlaylistElement {
+ return {
+ id: this.id,
+ position: this.position,
+ startTimestamp: this.startTimestamp,
+ stopTimestamp: this.stopTimestamp,
+
+ type: this.getType(options.accountId),
+
+ video: this.getVideoElement(options.accountId)
+ }
+ }
+
+ getType (this: MVideoPlaylistElementFormattable, accountId?: number) {
const video = this.Video
if (!video) return VideoPlaylistElementType.DELETED
if (video.privacy === VideoPrivacy.PRIVATE || video.privacy === VideoPrivacy.INTERNAL) return VideoPlaylistElementType.PRIVATE
if (video.isBlacklisted() || video.isBlocked()) return VideoPlaylistElementType.UNAVAILABLE
- if (video.nsfw === true && displayNSFW === false) return VideoPlaylistElementType.UNAVAILABLE
return VideoPlaylistElementType.REGULAR
}
- getVideoElement (this: MVideoPlaylistElementFormattable, displayNSFW?: boolean, accountId?: number) {
+ getVideoElement (this: MVideoPlaylistElementFormattable, accountId?: number) {
if (!this.Video) return null
- if (this.getType(displayNSFW, accountId) !== VideoPlaylistElementType.REGULAR) return null
+ if (this.getType(accountId) !== VideoPlaylistElementType.REGULAR) return null
return this.Video.toFormattedJSON()
}
- toFormattedJSON (
- this: MVideoPlaylistElementFormattable,
- options: { displayNSFW?: boolean, accountId?: number } = {}
- ): VideoPlaylistElement {
- return {
- id: this.id,
- position: this.position,
- startTimestamp: this.startTimestamp,
- stopTimestamp: this.stopTimestamp,
-
- type: this.getType(options.displayNSFW, options.accountId),
-
- video: this.getVideoElement(options.displayNSFW, options.accountId)
- }
- }
-
toActivityPubObject (this: MVideoPlaylistElementAP): PlaylistElementObject {
const base: PlaylistElementObject = {
id: this.url,