notification: fix NotificationHandlerInterface

This commit is contained in:
Julien Fastré 2022-01-04 17:55:34 +01:00
parent f76f7a1641
commit d31661ae7a
4 changed files with 27 additions and 11 deletions

View File

@ -25,12 +25,12 @@ final class ActivityNotificationHandler implements NotificationHandlerInterface
$this->activityRepository = $activityRepository;
}
public function getTemplate()
public function getTemplate(array $options = []): string
{
return '@ChillActivity/Activity/showInNotification.html.twig';
}
public function getTemplateData(Notification $notification)
public function getTemplateData(Notification $notification, array $options = []): array
{
return [
'notification' => $notification,

View File

@ -11,6 +11,22 @@ declare(strict_types=1);
namespace Chill\MainBundle\Notification;
use Chill\MainBundle\Entity\Notification;
interface NotificationHandlerInterface
{
/**
* Return the template path (twig file).
*/
public function getTemplate(array $options = []): string;
/**
* Return an array which will be passed as data for the template.
*/
public function getTemplateData(Notification $notification, array $options = []): array;
/**
* Return true if the handler supports the handling for this notification.
*/
public function supports(Notification $notification, array $options = []): bool;
}

View File

@ -32,10 +32,10 @@ final class NotificationHandlerManager
/**
* @throw NotificationHandlerNotFound if handler is not found
*/
public function getHandler(Notification $notification): NotificationHandlerInterface
public function getHandler(Notification $notification, array $options = []): NotificationHandlerInterface
{
foreach ($this->handlers as $renderer) {
if ($renderer->supports($notification)) {
if ($renderer->supports($notification, $options)) {
return $renderer;
}
}
@ -43,13 +43,13 @@ final class NotificationHandlerManager
throw new NotificationHandlerNotFound();
}
public function getTemplate(Notification $notification): string
public function getTemplate(Notification $notification, array $options = []): string
{
return $this->getHandler($notification)->getTemplate();
return $this->getHandler($notification, $options)->getTemplate($options);
}
public function getTemplateData(Notification $notification): array
public function getTemplateData(Notification $notification, array $options = []): array
{
return $this->getHandler($notification)->getTemplateData($notification);
return $this->getHandler($notification, $options)->getTemplateData($notification, $options);
}
}

View File

@ -25,12 +25,12 @@ final class AccompanyingPeriodNotificationHandler implements NotificationHandler
$this->accompanyingPeriodRepository = $accompanyingPeriodRepository;
}
public function getTemplate()
public function getTemplate(array $options = []): string
{
return 'ChillPersonBundle:AccompanyingPeriod:showInNotification.html.twig';
}
public function getTemplateData(Notification $notification)
public function getTemplateData(Notification $notification, array $options = []): array
{
return [
'notification' => $notification,
@ -38,7 +38,7 @@ final class AccompanyingPeriodNotificationHandler implements NotificationHandler
];
}
public function supports(Notification $notification)
public function supports(Notification $notification, array $options = []): bool
{
return $notification->getRelatedEntityClass() === AccompanyingPeriod::class;
}