src/Importer/Subscriber/ImportMessageSubscriber.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Importer\Subscriber;
  3. use App\Importer\Message\ImportMessage;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Mercure\HubInterface;
  6. use Symfony\Component\Mercure\Update;
  7. use Symfony\Component\Messenger\Event\WorkerMessageHandledEvent;
  8. use Twig;
  9. class ImportMessageSubscriber implements EventSubscriberInterface
  10. {
  11.   public function __construct(protected HubInterface $hub, protected Twig\Environment $twig)
  12.   {
  13.   }
  14.   public static function getSubscribedEvents()
  15.   {
  16.     return [
  17.       WorkerMessageHandledEvent::class => 'onMessageHandled',
  18.     ];
  19.   }
  20.   public function onMessageHandled(WorkerMessageHandledEvent $event)
  21.   {
  22.     $message $event->getEnvelope()->getMessage();
  23.     if (!$message instanceof ImportMessage) {
  24.       return;
  25.     }
  26.     $view $this->twig->render('importer/success.stream.html.twig', [
  27.       'envelope' => $event->getEnvelope(),
  28.     ]);
  29.     $this->hub->publish(new Update('imports'$view));
  30.   }
  31. }