Table,
UpdatedAt
} from 'sequelize-typescript'
-import { v4 as uuidv4 } from 'uuid'
import { buildNSFWFilter } from '@server/helpers/express-utils'
import { getPrivaciesForFederation, isPrivacyForFederation, isStateForFederation } from '@server/helpers/video'
import { LiveManager } from '@server/lib/live-manager'
import { VideoAbuseModel } from '../abuse/video-abuse'
import { AccountModel } from '../account/account'
import { AccountVideoRateModel } from '../account/account-video-rate'
+import { ActorImageModel } from '../account/actor-image'
import { UserModel } from '../account/user'
import { UserVideoHistoryModel } from '../account/user-video-history'
import { ActorModel } from '../activitypub/actor'
-import { AvatarModel } from '../avatar/avatar'
import { VideoRedundancyModel } from '../redundancy/video-redundancy'
import { ServerModel } from '../server/server'
import { TrackerModel } from '../server/tracker'
required: false
},
{
- model: AvatarModel.unscoped(),
+ model: ActorImageModel.unscoped(),
+ as: 'Avatar',
required: false
}
]
required: false
},
{
- model: AvatarModel.unscoped(),
+ model: ActorImageModel.unscoped(),
+ as: 'Avatar',
required: false
}
]
@BeforeDestroy
static async sendDelete (instance: MVideoAccountLight, options) {
- if (instance.isOwned()) {
- if (!instance.VideoChannel) {
- instance.VideoChannel = await instance.$get('VideoChannel', {
- include: [
- ActorModel,
- AccountModel
- ],
- transaction: options.transaction
- }) as MChannelAccountDefault
- }
+ if (!instance.isOwned()) return undefined
- return sendDeleteVideo(instance, options.transaction)
+ // Lazy load channels
+ if (!instance.VideoChannel) {
+ instance.VideoChannel = await instance.$get('VideoChannel', {
+ include: [
+ ActorModel,
+ AccountModel
+ ],
+ transaction: options.transaction
+ }) as MChannelAccountDefault
}
- return undefined
+ return sendDeleteVideo(instance, options.transaction)
}
@BeforeDestroy
logger.info('Saving video abuses details of video %s.', instance.url)
+ if (!instance.Trackers) instance.Trackers = await instance.$get('Trackers', { transaction: options.transaction })
const details = instance.toFormattedDetailsJSON()
for (const abuse of instance.VideoAbuses) {
function buildActor (rowActor: any) {
const avatarModel = rowActor.Avatar.id !== null
- ? new AvatarModel(pick(rowActor.Avatar, avatarKeys), buildOpts)
+ ? new ActorImageModel(pick(rowActor.Avatar, avatarKeys), buildOpts)
: null
const serverModel = rowActor.Server.id !== null
this.Thumbnails.push(savedThumbnail)
}
- generateThumbnailName () {
- return uuidv4() + '.jpg'
- }
-
getMiniature () {
if (Array.isArray(this.Thumbnails) === false) return undefined
return this.Thumbnails.find(t => t.type === ThumbnailType.MINIATURE)
}
- generatePreviewName () {
- return uuidv4() + '.jpg'
- }
-
hasPreview () {
return !!this.getPreview()
}