From 7bcbfb32f7cca08d111be46c7f1640e372d4a4b0 Mon Sep 17 00:00:00 2001 From: Yassine Doghri <yassine@doghri.fr> Date: Fri, 28 May 2021 17:04:54 +0000 Subject: [PATCH] fix(activity-pub): cache issues when navigating to activity stream urls --- .../Controllers/ActorController.php | 22 +++++++++++++++---- app/Libraries/ActivityPub/Core/ObjectType.php | 4 ++-- .../ActivityPub/Models/ActorModel.php | 5 ++++- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/app/Libraries/ActivityPub/Controllers/ActorController.php b/app/Libraries/ActivityPub/Controllers/ActorController.php index e8feb89f0d..88b4dbd62a 100644 --- a/app/Libraries/ActivityPub/Controllers/ActorController.php +++ b/app/Libraries/ActivityPub/Controllers/ActorController.php @@ -48,7 +48,10 @@ class ActorController extends Controller return $this->{$method}(...$params); } - public function index(): RedirectResponse + /** + * @noRector ReturnTypeDeclarationRector + */ + public function index(): ResponseInterface { $actorObjectClass = $this->config->actorObject; $actorObject = new $actorObjectClass($this->actor); @@ -60,6 +63,8 @@ class ActorController extends Controller /** * Handles incoming requests from fediverse servers + * + * @noRector ReturnTypeDeclarationRector */ public function inbox(): ResponseInterface { @@ -228,7 +233,10 @@ class ActorController extends Controller } } - public function outbox(): RedirectResponse + /** + * @noRector ReturnTypeDeclarationRector + */ + public function outbox(): ResponseInterface { // get published activities by publication date $actorActivity = model('ActivityModel') @@ -257,7 +265,10 @@ class ActorController extends Controller ->setBody($collection->toJSON()); } - public function followers(): RedirectResponse + /** + * @noRector ReturnTypeDeclarationRector + */ + public function followers(): ResponseInterface { // get followers for a specific actor $followers = model('ActorModel') @@ -334,7 +345,10 @@ class ActorController extends Controller ); } - public function activity(string $activityId): RedirectResponse + /** + * @noRector ReturnTypeDeclarationRector + */ + public function activity(string $activityId): ResponseInterface { if ( ! ($activity = model('ActivityModel')->getActivityById($activityId)) diff --git a/app/Libraries/ActivityPub/Core/ObjectType.php b/app/Libraries/ActivityPub/Core/ObjectType.php index bfd0c4b301..2d87340060 100644 --- a/app/Libraries/ActivityPub/Core/ObjectType.php +++ b/app/Libraries/ActivityPub/Core/ObjectType.php @@ -33,7 +33,7 @@ class ObjectType extends AbstractObject protected array $to = ['https://www.w3.org/ns/activitystreams#Public']; /** - * @var string[] + * @var string[]|null */ - protected array $cc = []; + protected ?array $cc = null; } diff --git a/app/Libraries/ActivityPub/Models/ActorModel.php b/app/Libraries/ActivityPub/Models/ActorModel.php index 0c98e9f64e..789714f519 100644 --- a/app/Libraries/ActivityPub/Models/ActorModel.php +++ b/app/Libraries/ActivityPub/Models/ActorModel.php @@ -84,7 +84,10 @@ class ActorModel extends Model $domain = get_current_domain(); } - $cacheName = "actor-{$username}-{$domain}"; + // remove colons for port if set + $cacheDomain = str_replace(':', '', $domain); + + $cacheName = "actor-{$username}-{$cacheDomain}"; if (! ($found = cache($cacheName))) { $found = $this->where([ 'username' => $username, -- GitLab