- // Target sends to account he accepted the follow request
- return sendAccept(accountFollow, t)
+ // Set the follow as accepted if the remote actor follows a channel or account
+ // Or if the instance automatically accepts followers
+ if (actorFollow.state !== 'accepted' && (isFollowingInstance === false || CONFIG.FOLLOWERS.INSTANCE.MANUAL_APPROVAL === false)) {
+ actorFollow.state = 'accepted'
+
+ await actorFollow.save({ transaction: t })
+ }
+
+ // Before PeerTube V3 we did not save the follow ID. Try to fix these old follows
+ if (!actorFollow.url) {
+ actorFollow.url = activityId
+ await actorFollow.save({ transaction: t })
+ }
+
+ actorFollow.ActorFollower = byActor
+ actorFollow.ActorFollowing = targetActor
+
+ // Target sends to actor he accepted the follow request
+ if (actorFollow.state === 'accepted') {
+ sendAccept(actorFollow)
+
+ await autoFollowBackIfNeeded(actorFollow, t)
+ }
+
+ return { actorFollow, created, isFollowingInstance, targetActor }