acquia_dam-1.0.0-rc1/src/EventSubscriber/SystemThemeConfigSubscriber.php
src/EventSubscriber/SystemThemeConfigSubscriber.php
<?php
declare(strict_types=1);
namespace Drupal\acquia_dam\EventSubscriber;
use Drupal\Core\Asset\LibraryDiscoveryInterface;
use Drupal\Core\Config\ConfigCrudEvent;
use Drupal\Core\Config\ConfigEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Rebuilds library definitions if the admin theme changes.
*/
final class SystemThemeConfigSubscriber implements EventSubscriberInterface {
/**
* The library discovery.
*
* @var \Drupal\Core\Asset\LibraryDiscoveryInterface
*/
private $libraryDiscovery;
/**
* Constructs a new SystemThemeConfigSubscriber object.
*
* @param \Drupal\Core\Asset\LibraryDiscoveryInterface $library_discovery
* The library discovery.
*/
public function __construct(LibraryDiscoveryInterface $library_discovery) {
$this->libraryDiscovery = $library_discovery;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents(): array {
$events[ConfigEvents::SAVE][] = 'onConfigSave';
return $events;
}
/**
* Rebuilds library definitions when the admin theme is changed.
*
* @param \Drupal\Core\Config\ConfigCrudEvent $event
* The event.
*/
public function onConfigSave(ConfigCrudEvent $event): void {
if ($event->getConfig()->getName() === 'system.theme' && $event->isChanged('admin')) {
$this->libraryDiscovery->clearCachedDefinitions();
}
}
}
