aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/activitypub/process/process-undo.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/activitypub/process/process-undo.ts')
-rw-r--r--server/lib/activitypub/process/process-undo.ts16
1 files changed, 7 insertions, 9 deletions
diff --git a/server/lib/activitypub/process/process-undo.ts b/server/lib/activitypub/process/process-undo.ts
index 9cad59233..5a770bb97 100644
--- a/server/lib/activitypub/process/process-undo.ts
+++ b/server/lib/activitypub/process/process-undo.ts
@@ -7,8 +7,8 @@ import { AccountModel } from '../../../models/account/account'
7import { AccountVideoRateModel } from '../../../models/account/account-video-rate' 7import { AccountVideoRateModel } from '../../../models/account/account-video-rate'
8import { ActorModel } from '../../../models/activitypub/actor' 8import { ActorModel } from '../../../models/activitypub/actor'
9import { ActorFollowModel } from '../../../models/activitypub/actor-follow' 9import { ActorFollowModel } from '../../../models/activitypub/actor-follow'
10import { VideoModel } from '../../../models/video/video'
11import { forwardActivity } from '../send/misc' 10import { forwardActivity } from '../send/misc'
11import { getOrCreateAccountAndVideoAndChannel } from '../videos'
12 12
13async function processUndoActivity (activity: ActivityUndo) { 13async function processUndoActivity (activity: ActivityUndo) {
14 const activityToUndo = activity.object 14 const activityToUndo = activity.object
@@ -43,16 +43,15 @@ function processUndoLike (actorUrl: string, activity: ActivityUndo) {
43 return retryTransactionWrapper(undoLike, options) 43 return retryTransactionWrapper(undoLike, options)
44} 44}
45 45
46function undoLike (actorUrl: string, activity: ActivityUndo) { 46async function undoLike (actorUrl: string, activity: ActivityUndo) {
47 const likeActivity = activity.object as ActivityLike 47 const likeActivity = activity.object as ActivityLike
48 48
49 const { video } = await getOrCreateAccountAndVideoAndChannel(likeActivity.object)
50
49 return sequelizeTypescript.transaction(async t => { 51 return sequelizeTypescript.transaction(async t => {
50 const byAccount = await AccountModel.loadByUrl(actorUrl, t) 52 const byAccount = await AccountModel.loadByUrl(actorUrl, t)
51 if (!byAccount) throw new Error('Unknown account ' + actorUrl) 53 if (!byAccount) throw new Error('Unknown account ' + actorUrl)
52 54
53 const video = await VideoModel.loadByUrlAndPopulateAccount(likeActivity.object, t)
54 if (!video) throw new Error('Unknown video ' + likeActivity.actor)
55
56 const rate = await AccountVideoRateModel.load(byAccount.id, video.id, t) 55 const rate = await AccountVideoRateModel.load(byAccount.id, video.id, t)
57 if (!rate) throw new Error(`Unknown rate by account ${byAccount.id} for video ${video.id}.`) 56 if (!rate) throw new Error(`Unknown rate by account ${byAccount.id} for video ${video.id}.`)
58 57
@@ -76,16 +75,15 @@ function processUndoDislike (actorUrl: string, activity: ActivityUndo) {
76 return retryTransactionWrapper(undoDislike, options) 75 return retryTransactionWrapper(undoDislike, options)
77} 76}
78 77
79function undoDislike (actorUrl: string, activity: ActivityUndo) { 78async function undoDislike (actorUrl: string, activity: ActivityUndo) {
80 const dislike = activity.object.object as DislikeObject 79 const dislike = activity.object.object as DislikeObject
81 80
81 const { video } = await getOrCreateAccountAndVideoAndChannel(dislike.object)
82
82 return sequelizeTypescript.transaction(async t => { 83 return sequelizeTypescript.transaction(async t => {
83 const byAccount = await AccountModel.loadByUrl(actorUrl, t) 84 const byAccount = await AccountModel.loadByUrl(actorUrl, t)
84 if (!byAccount) throw new Error('Unknown account ' + actorUrl) 85 if (!byAccount) throw new Error('Unknown account ' + actorUrl)
85 86
86 const video = await VideoModel.loadByUrlAndPopulateAccount(dislike.object, t)
87 if (!video) throw new Error('Unknown video ' + dislike.actor)
88
89 const rate = await AccountVideoRateModel.load(byAccount.id, video.id, t) 87 const rate = await AccountVideoRateModel.load(byAccount.id, video.id, t)
90 if (!rate) throw new Error(`Unknown rate by account ${byAccount.id} for video ${video.id}.`) 88 if (!rate) throw new Error(`Unknown rate by account ${byAccount.id} for video ${video.id}.`)
91 89