<?php declare(strict_types=1);
namespace Shopware\Core\Framework\Webhook;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Contracts\Service\ResetInterface;
class WebhookCacheClearer implements EventSubscriberInterface, ResetInterface
{
private WebhookDispatcher $dispatcher;
/**
* @internal
*/
public function __construct(WebhookDispatcher $dispatcher)
{
$this->dispatcher = $dispatcher;
}
public static function getSubscribedEvents(): array
{
return [
'webhook.written' => 'clearWebhookCache',
'acl_role.written' => 'clearPrivilegesCache',
];
}
/**
* Reset can not be handled by the Dispatcher itself, as it may be in the middle of a decoration chain
* Therefore tagging that service directly won't work
*/
public function reset(): void
{
$this->clearWebhookCache();
$this->clearPrivilegesCache();
}
public function clearWebhookCache(): void
{
$this->dispatcher->clearInternalWebhookCache();
}
public function clearPrivilegesCache(): void
{
$this->dispatcher->clearInternalPrivilegesCache();
}
}