<?php
namespace App\Importer\Subscriber;
use App\Importer\Message\ImportMessage;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Mercure\HubInterface;
use Symfony\Component\Mercure\Update;
use Symfony\Component\Messenger\Event\WorkerMessageHandledEvent;
use Twig;
class ImportMessageSubscriber implements EventSubscriberInterface
{
public function __construct(protected HubInterface $hub, protected Twig\Environment $twig)
{
}
public static function getSubscribedEvents()
{
return [
WorkerMessageHandledEvent::class => 'onMessageHandled',
];
}
public function onMessageHandled(WorkerMessageHandledEvent $event)
{
$message = $event->getEnvelope()->getMessage();
if (!$message instanceof ImportMessage) {
return;
}
$view = $this->twig->render('importer/success.stream.html.twig', [
'envelope' => $event->getEnvelope(),
]);
$this->hub->publish(new Update('imports', $view));
}
}