<?php declare(strict_types=1);
namespace Shopware\Storefront\Framework\Routing;
use Shopware\Core\Framework\Adapter\Cache\CacheInvalidator;
use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenContainerEvent;
use Shopware\Core\System\SalesChannel\SalesChannelDefinition;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CachedDomainLoaderInvalidator implements EventSubscriberInterface
{
private CacheInvalidator $logger;
public function __construct(CacheInvalidator $logger)
{
$this->logger = $logger;
}
/**
* @return array<string, string|array{0: string, 1: int}|list<array{0: string, 1?: int}>>
*/
public static function getSubscribedEvents()
{
return [
EntityWrittenContainerEvent::class => [
['invalidate', 2000],
],
];
}
public function invalidate(EntityWrittenContainerEvent $event): void
{
if ($event->getEventByEntityName(SalesChannelDefinition::ENTITY_NAME)) {
$this->logger->invalidate([CachedDomainLoader::CACHE_KEY]);
}
}
}