}
}
+ if (activityToUndo.type === 'Dislike') {
+ return retryTransactionWrapper(processUndoDislike, byActor, activity)
+ }
+
if (activityToUndo.type === 'Follow') {
return retryTransactionWrapper(processUndoFollow, byActor, activityToUndo)
}
}
async function processUndoDislike (byActor: ActorModel, activity: ActivityUndo) {
- const dislike = activity.object.object as DislikeObject
+ const dislike = activity.object.type === 'Dislike'
+ ? activity.object
+ : activity.object.object as DislikeObject
const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: dislike.object })
return sequelizeTypescript.transaction(async t => {
const cacheFile = await VideoRedundancyModel.loadByUrl(cacheFileObject.id)
- if (!cacheFile) throw new Error('Unknown video cache ' + cacheFileObject.id)
+ if (!cacheFile) {
+ logger.debug('Cannot undo unknown video cache %s.', cacheFileObject.id)
+ return
+ }
if (cacheFile.actorId !== byActor.id) throw new Error('Cannot delete redundancy ' + cacheFile.url + ' of another actor.')