diff options
Diffstat (limited to 'server/lib')
-rw-r--r-- | server/lib/activitypub/process/process-follow.ts | 26 | ||||
-rw-r--r-- | server/lib/job-queue/handlers/activitypub-follow.ts | 18 |
2 files changed, 14 insertions, 30 deletions
diff --git a/server/lib/activitypub/process/process-follow.ts b/server/lib/activitypub/process/process-follow.ts index 5562f0798..e44590ffc 100644 --- a/server/lib/activitypub/process/process-follow.ts +++ b/server/lib/activitypub/process/process-follow.ts | |||
@@ -48,23 +48,15 @@ async function processFollow (byActor: MActorSignature, activityId: string, targ | |||
48 | return { actorFollow: undefined as MActorFollowActors } | 48 | return { actorFollow: undefined as MActorFollowActors } |
49 | } | 49 | } |
50 | 50 | ||
51 | // Don't use findOrCreate by sequelize that breaks our actor follow hooks | 51 | const [ actorFollow, created ] = await ActorFollowModel.findOrCreateCustom({ |
52 | let created = false | 52 | byActor, |
53 | let actorFollow: MActorFollowActors = await ActorFollowModel.loadByActorAndTarget(byActor.id, targetActor.id, t) | 53 | targetActor, |
54 | 54 | activityId, | |
55 | if (!actorFollow) { | 55 | state: CONFIG.FOLLOWERS.INSTANCE.MANUAL_APPROVAL |
56 | created = true | 56 | ? 'pending' |
57 | 57 | : 'accepted', | |
58 | actorFollow = await ActorFollowModel.create({ | 58 | transaction: t |
59 | actorId: byActor.id, | 59 | }) |
60 | targetActorId: targetActor.id, | ||
61 | url: activityId, | ||
62 | |||
63 | state: CONFIG.FOLLOWERS.INSTANCE.MANUAL_APPROVAL | ||
64 | ? 'pending' | ||
65 | : 'accepted' | ||
66 | }, { transaction: t }) | ||
67 | } | ||
68 | 60 | ||
69 | // Set the follow as accepted if the remote actor follows a channel or account | 61 | // Set the follow as accepted if the remote actor follows a channel or account |
70 | // Or if the instance automatically accepts followers | 62 | // Or if the instance automatically accepts followers |
diff --git a/server/lib/job-queue/handlers/activitypub-follow.ts b/server/lib/job-queue/handlers/activitypub-follow.ts index 91e3d33c6..55a15930a 100644 --- a/server/lib/job-queue/handlers/activitypub-follow.ts +++ b/server/lib/job-queue/handlers/activitypub-follow.ts | |||
@@ -54,21 +54,13 @@ async function follow (fromActor: MActor, targetActor: MActorFull, isAutoFollow | |||
54 | const state = !fromActor.serverId && !targetActor.serverId ? 'accepted' : 'pending' | 54 | const state = !fromActor.serverId && !targetActor.serverId ? 'accepted' : 'pending' |
55 | 55 | ||
56 | const actorFollow = await sequelizeTypescript.transaction(async t => { | 56 | const actorFollow = await sequelizeTypescript.transaction(async t => { |
57 | const [ actorFollow ] = await ActorFollowModel.findOrCreate<MActorFollowActors>({ | 57 | const [ actorFollow ] = await ActorFollowModel.findOrCreateCustom({ |
58 | where: { | 58 | byActor: fromActor, |
59 | actorId: fromActor.id, | 59 | state, |
60 | targetActorId: targetActor.id | 60 | targetActor, |
61 | }, | 61 | activityId: getLocalActorFollowActivityPubUrl(fromActor, targetActor), |
62 | defaults: { | ||
63 | state, | ||
64 | url: getLocalActorFollowActivityPubUrl(fromActor, targetActor), | ||
65 | actorId: fromActor.id, | ||
66 | targetActorId: targetActor.id | ||
67 | }, | ||
68 | transaction: t | 62 | transaction: t |
69 | }) | 63 | }) |
70 | actorFollow.ActorFollowing = targetActor | ||
71 | actorFollow.ActorFollower = fromActor | ||
72 | 64 | ||
73 | // Send a notification to remote server if our follow is not already accepted | 65 | // Send a notification to remote server if our follow is not already accepted |
74 | if (actorFollow.state !== 'accepted') sendFollow(actorFollow, t) | 66 | if (actorFollow.state !== 'accepted') sendFollow(actorFollow, t) |