<?php
namespace App\Race\EventSubscriber;
use App\Race\Event\RaceAttendEvent;
use App\Race\Event\RaceEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Mercure\HubInterface;
use Symfony\Component\Mercure\Update;
class RaceAttendeesSubscriber implements EventSubscriberInterface
{
public function __construct(
protected HubInterface $hub,
protected \Twig\Environment $twig
) {
}
public static function getSubscribedEvents()
{
return [
RaceEvents::ATTEND => 'updateRaceAttendees',
RaceEvents::UNATTEND => 'updateRaceAttendees',
];
}
public function updateRaceAttendees(RaceAttendEvent $event)
{
$html = $this->twig->render('network/race/event/attend.stream.twig', ['event' => $event->race]);
$this->hub->publish(new Update($event->getTopic(), $html));
}
}