*/ class MessageKnownSinceListener implements IEventListener { public function __construct( private MessageRetentionMapper $messageRetentionMapper, private ITimeFactory $timeFactory, ) { } #[\Override] public function handle(Event $event): void { if (!($event instanceof NewMessagesSynchronized)) { return; } $trashRetention = $event->getAccount()->getMailAccount()->getTrashRetentionDays(); if ($trashRetention === null) { return; } $trashMailboxId = $event->getAccount()->getMailAccount()->getTrashMailboxId(); if ($trashMailboxId === null) { return; } $now = $this->timeFactory->getTime(); foreach ($event->getMessages() as $message) { if ($message->getMailboxId() !== $trashMailboxId) { continue; } $retention = new MessageRetention(); $retention->setMailboxId($message->getMailboxId()); $retention->setUid($message->getUid()); $retention->setKnownSince($now); $this->messageRetentionMapper->insert($retention); } } }