+async function processUndoCacheFile (byActor: ActorModel, activity: ActivityUndo) {
+ const cacheFileObject = activity.object.object as CacheFileObject
+
+ const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: cacheFileObject.object })
+
+ return sequelizeTypescript.transaction(async t => {
+ const cacheFile = await VideoRedundancyModel.loadByUrl(cacheFileObject.id)
+ if (!cacheFile) throw new Error('Unknown video cache ' + cacheFile.url)
+
+ await cacheFile.destroy()
+
+ if (video.isOwned()) {
+ // Don't resend the activity to the sender
+ const exceptions = [ byActor ]
+
+ await forwardVideoRelatedActivity(activity, t, exceptions, video)
+ }
+ })
+}
+
+function processUndoFollow (follower: ActorModel, followActivity: ActivityFollow) {