diff --git a/app/Http/Controllers/FollowerController.php b/app/Http/Controllers/FollowerController.php index cf2ea45a9..556de82d2 100644 --- a/app/Http/Controllers/FollowerController.php +++ b/app/Http/Controllers/FollowerController.php @@ -86,6 +86,9 @@ class FollowerController extends Controller FollowPipeline::dispatch($follower); } else { $follower = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->firstOrFail(); + if($remote == true) { + $this->sendUndoFollow($user, $target); + } $follower->delete(); } @@ -115,4 +118,28 @@ class FollowerController extends Controller Helpers::sendSignedObject($user, $inbox, $payload); } + + protected function sendUndoFollow($user, $target) + { + if($target->domain == null || $user->domain != null) { + return; + } + + $payload = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => $user->permalink('#follow/'.$target->id.'/undo'), + 'type' => 'Undo', + 'actor' => $user->permalink(), + 'object' => [ + 'id' => $user->permalink('#follows/'.$target->id), + 'actor' => $user->permalink(), + 'object' => $target->permalink(), + 'type' => 'Follow' + ] + ]; + + $inbox = $target->sharedInbox ?? $target->inbox_url; + + Helpers::sendSignedObject($user, $inbox, $payload); + } }