diff --git a/plugins/ActivityPub/ActivityPub.php b/plugins/ActivityPub/ActivityPub.php index 951318e344..e46eb42646 100644 --- a/plugins/ActivityPub/ActivityPub.php +++ b/plugins/ActivityPub/ActivityPub.php @@ -188,6 +188,7 @@ class ActivityPub extends Plugin return Event::next; } switch ($route) { + case 'actor_view_id': case 'person_actor_view_id': case 'person_actor_view_nickname': case 'group_actor_view_id': diff --git a/src/Controller/ActorFeed.php b/src/Controller/ActorProfile.php similarity index 76% rename from src/Controller/ActorFeed.php rename to src/Controller/ActorProfile.php index c1eace35c3..643f4f15ec 100644 --- a/src/Controller/ActorFeed.php +++ b/src/Controller/ActorProfile.php @@ -23,23 +23,23 @@ declare(strict_types = 1); namespace App\Controller; +use App\Core\Controller; use App\Core\Router\Router; use App\Entity\Actor; -use Component\Collection\Util\Controller\FeedController; use InvalidArgumentException; -use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; -class ActorFeed extends FeedController +class ActorProfile extends Controller { - public function actorViewId(Request $request, int $id): RedirectResponse + public function actorViewId(Request $request, int $id): array { - $route_id = match (Actor::getById($id)->getType()) { + $actor = Actor::getById($id); + $route_id = match ($actor->getType()) { Actor::PERSON => 'person_actor_view_id', Actor::GROUP => 'group_actor_view_id', Actor::BOT => 'bot_actor_view_id', default => throw new InvalidArgumentException(), }; - return new RedirectResponse(Router::url($route_id, ['id' => $id]), status: 302); + return ['_redirect' => Router::url($route_id, ['id' => $id]), 'actor' => $actor]; } } diff --git a/src/Routes/Actor.php b/src/Routes/Actor.php index fdffa85d32..334ef58957 100644 --- a/src/Routes/Actor.php +++ b/src/Routes/Actor.php @@ -44,6 +44,6 @@ abstract class Actor public static function load(RouteLoader $r): void { - $r->connect(id: 'actor_view_id', uri_path: '/actor/{id<\d+>}', target: [C\ActorFeed::class, 'actorViewId']); + $r->connect(id: 'actor_view_id', uri_path: '/actor/{id<\d+>}', target: [C\ActorProfile::class, 'actorViewId']); } }