<?php
namespace Zeobv\PwaStorefront\Subscriber;
use Psr\Log\LoggerInterface;
use Shopware\Core\Content\Category\CategoryEvents;
use Shopware\Core\Content\Cms\CmsPageEvents;
use Shopware\Core\Content\Product\ProductEvents;
use Shopware\Core\System\SalesChannel\SalesChannelEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Zeobv\PwaStorefront\Services\ConfigService;
class EntitySubscriber implements EventSubscriberInterface
{
/**
* @var ConfigService
*/
protected $configService;
/**
* @var LoggerInterface
*/
protected $logger;
/**
* @param ConfigService $configService
* @param LoggerInterface $logger
*/
public function __construct(
ConfigService $configService,
LoggerInterface $logger
)
{
$this->configService = $configService;
$this->logger = $logger;
}
/**
* @return string[]
*/
public static function getSubscribedEvents(): array
{
return [
CmsPageEvents::PAGE_WRITTEN_EVENT => 'afterEntityWritten',
ProductEvents::PRODUCT_WRITTEN_EVENT => 'afterEntityWritten',
ProductEvents::PRODUCT_CATEGORY_WRITTEN_EVENT => 'afterEntityWritten',
CategoryEvents::CATEGORY_WRITTEN_EVENT => 'afterEntityWritten',
SalesChannelEvents::SALES_CHANNEL_WRITTEN => 'afterEntityWritten',
];
}
public function afterEntityWritten(): void
{
try {
$this->configService->refreshCacheName();
} catch (\Throwable $e) {
$this->logger->error($e->getMessage(), ['trace' => $e->getTraceAsString()]);
}
}
}