Skip to content

Commit cbcd898

Browse files
committed
Fix Flag and Follow Activity handling
1 parent 57ec00a commit cbcd898

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

src/Factory/ActivityPub/FlagFactory.php

+9-2
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,26 @@
66

77
use App\Entity\Activity;
88
use App\Entity\Report;
9+
use Doctrine\ORM\EntityManagerInterface;
910

1011
class FlagFactory
1112
{
12-
public function __construct()
13-
{
13+
public function __construct(
14+
private readonly EntityManagerInterface $entityManager,
15+
) {
1416
}
1517

1618
public function build(Report $report): Activity
1719
{
1820
$activity = new Activity('Flag');
1921
$activity->setObject($report->getSubject());
22+
$activity->objectUser = $report->reported;
2023
$activity->setActor($report->reporting);
2124
$activity->contentString = $report->reason;
25+
$activity->audience = $report->magazine;
26+
27+
$this->entityManager->persist($activity);
28+
$this->entityManager->flush();
2229

2330
return $activity;
2431
}

src/MessageHandler/ActivityPub/Outbox/FlagHandler.php

+5
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ public function doWork(MessageInterface $message): void
4848
}
4949
$this->logger->debug('got a FlagMessage');
5050
$report = $this->reportRepository->find($message->reportId);
51+
if (!$report) {
52+
$this->logger->info("couldn't find report with id {id}", ['id' => $message->reportId]);
53+
54+
return;
55+
}
5156
$this->logger->debug('found the report: '.json_encode($report));
5257
$inboxes = $this->getInboxUrls($report);
5358
if (0 === \sizeof($inboxes)) {

src/Service/ActivityPub/ActivityJsonBuilder.php

+9-2
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ public function buildFlagFromActivity(Activity $activity): array
240240

241241
$result = [
242242
'@context' => ActivityPubActivityInterface::CONTEXT_URL,
243-
'id' => $this->urlGenerator->generate('ap_object', ['report_id' => $activity->uuid], UrlGeneratorInterface::ABSOLUTE_URL),
243+
'id' => $this->urlGenerator->generate('ap_object', ['id' => $activity->uuid], UrlGeneratorInterface::ABSOLUTE_URL),
244244
'type' => 'Flag',
245245
'actor' => $this->personFactory->getActivityPubId($activity->userActor),
246246
'object' => $object,
@@ -258,12 +258,19 @@ public function buildFlagFromActivity(Activity $activity): array
258258

259259
public function buildFollowFromActivity(Activity $activity): array
260260
{
261+
$object = $activity->getObject();
262+
if ($object instanceof User) {
263+
$activityObject = $this->personFactory->getActivityPubId($object);
264+
} else {
265+
$activityObject = $this->groupFactory->getActivityPubId($object);
266+
}
267+
261268
return [
262269
'@context' => $this->contextsProvider->referencedContexts(),
263270
'id' => $this->urlGenerator->generate('ap_object', ['id' => $activity->uuid], UrlGeneratorInterface::ABSOLUTE_URL),
264271
'type' => 'Follow',
265272
'actor' => $this->personFactory->getActivityPubId($activity->userActor),
266-
'object' => $this->personFactory->getActivityPubId($activity->objectUser),
273+
'object' => $activityObject,
267274
];
268275
}
269276

src/Service/ActivityPub/Wrapper/FollowWrapper.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace App\Service\ActivityPub\Wrapper;
66

77
use App\Entity\Activity;
8+
use App\Entity\Magazine;
89
use App\Entity\User;
910
use Doctrine\ORM\EntityManagerInterface;
1011

@@ -15,7 +16,7 @@ public function __construct(
1516
) {
1617
}
1718

18-
public function build(User $follower, User $following): Activity
19+
public function build(User $follower, User|Magazine $following): Activity
1920
{
2021
$activity = new Activity('Follow');
2122
$activity->setActor($follower);

0 commit comments

Comments
 (0)