diff options
Diffstat (limited to 'server/lib/activitypub/process/process-reject.ts')
-rw-r--r-- | server/lib/activitypub/process/process-reject.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/server/lib/activitypub/process/process-reject.ts b/server/lib/activitypub/process/process-reject.ts new file mode 100644 index 000000000..b2de28d79 --- /dev/null +++ b/server/lib/activitypub/process/process-reject.ts | |||
@@ -0,0 +1,32 @@ | |||
1 | import { ActivityReject } from '../../../../shared/models/activitypub/activity' | ||
2 | import { sequelizeTypescript } from '../../../initializers' | ||
3 | import { ActorModel } from '../../../models/activitypub/actor' | ||
4 | import { ActorFollowModel } from '../../../models/activitypub/actor-follow' | ||
5 | |||
6 | async function processRejectActivity (activity: ActivityReject, inboxActor?: ActorModel) { | ||
7 | if (inboxActor === undefined) throw new Error('Need to reject on explicit inbox.') | ||
8 | |||
9 | const targetActor = await ActorModel.loadByUrl(activity.actor) | ||
10 | |||
11 | return processReject(inboxActor, targetActor) | ||
12 | } | ||
13 | |||
14 | // --------------------------------------------------------------------------- | ||
15 | |||
16 | export { | ||
17 | processRejectActivity | ||
18 | } | ||
19 | |||
20 | // --------------------------------------------------------------------------- | ||
21 | |||
22 | async function processReject (actor: ActorModel, targetActor: ActorModel) { | ||
23 | return sequelizeTypescript.transaction(async t => { | ||
24 | const actorFollow = await ActorFollowModel.loadByActorAndTarget(actor.id, targetActor.id, t) | ||
25 | |||
26 | if (!actorFollow) throw new Error(`'Unknown actor follow ${actor.id} -> ${targetActor.id}.`) | ||
27 | |||
28 | await actorFollow.destroy({ transaction: t }) | ||
29 | |||
30 | return undefined | ||
31 | }) | ||
32 | } | ||