+ const objectUrl = typeof activity.object === 'string' ? activity.object : activity.object.id
+
+ if (activity.actor === objectUrl) {
+ // We need more attributes (all the account and channel)
+ const byActorFull = await ActorModel.loadByUrlAndPopulateAccountAndChannel(byActor.url)
+
+ if (byActorFull.type === 'Person') {
+ if (!byActorFull.Account) throw new Error('Actor ' + byActorFull.url + ' is a person but we cannot find it in database.')
+
+ byActorFull.Account.Actor = await byActorFull.Account.$get('Actor') as ActorModel
+ return retryTransactionWrapper(processDeleteAccount, byActorFull.Account)
+ } else if (byActorFull.type === 'Group') {
+ if (!byActorFull.VideoChannel) throw new Error('Actor ' + byActorFull.url + ' is a group but we cannot find it in database.')
+
+ byActorFull.VideoChannel.Actor = await byActorFull.VideoChannel.$get('Actor') as ActorModel
+ return retryTransactionWrapper(processDeleteVideoChannel, byActorFull.VideoChannel)
+ }
+ }
+
+ {
+ const videoCommentInstance = await VideoCommentModel.loadByUrlAndPopulateAccount(objectUrl)
+ if (videoCommentInstance) {
+ return retryTransactionWrapper(processDeleteVideoComment, byActor, videoCommentInstance, activity)
+ }