headless_cms-1.0.3/modules/headless_cms_preview_nats/src/EventSubscriber/HeadlessPreviewEventSubscriber.php

modules/headless_cms_preview_nats/src/EventSubscriber/HeadlessPreviewEventSubscriber.php
<?php

declare(strict_types=1);

namespace Drupal\headless_cms_preview_nats\EventSubscriber;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\headless_cms_preview\Event\HeadlessPreviewUpdatedEvent;
use Drupal\nats\NatsClientManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * Event subscriber for headless preview events.
 */
class HeadlessPreviewEventSubscriber implements EventSubscriberInterface {

  public function __construct(
    protected readonly NatsClientManagerInterface $natsClientManager,
    protected readonly ConfigFactoryInterface $configFactory,
  ) {}

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    return [
      HeadlessPreviewUpdatedEvent::EVENT_NAME => ['onHeadlessPreviewUpdated'],
    ];
  }

  /**
   * Handles the HeadlessPreviewUpdatedEvent.
   */
  public function onHeadlessPreviewUpdated(HeadlessPreviewUpdatedEvent $event) {
    $config = $this->configFactory->get('headless_cms_preview_nats.settings');

    if (!$config->get('enabled')) {
      return;
    }

    $client = $this->natsClientManager->get($config->get('nats_client'));

    $topic = vsprintf('%s.%s.%s--%s', [
      $config->get('topic_prefix'),
      $event->account->id(),
      $event->entity->getEntityTypeId(),
      $event->entity->bundle(),
    ]);

    $client->publish($topic, [
      'operation' => 'update',
    ]);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc