push->setOutput($output); } #[\Override] public function notify(INotification $notification): void { $this->lastInsertedId = $this->handler->add($notification); try { $this->push->pushToDevice($this->lastInsertedId, $notification); } catch (NotificationNotFoundException $e) { $this->logger->error('Error while preparing push notification', ['exception' => $e]); } } public function getLastInsertedId(): ?int { return $this->lastInsertedId; } #[\Override] public function getCount(INotification $notification): int { return $this->handler->count($notification); } #[\Override] public function markProcessed(INotification $notification): void { $deleted = $this->handler->delete($notification); $isAlreadyDeferring = $this->push->isDeferring(); if (!$isAlreadyDeferring) { $this->push->deferPayloads(); } foreach ($deleted as $user => $notifications) { foreach ($notifications as $data) { $this->push->pushDeleteToDevice((string)$user, [$data['id']], $data['app']); } } if (!$isAlreadyDeferring) { $this->push->flushPayloads(); } } #[\Override] public function defer(): void { $this->push->deferPayloads(); } #[\Override] public function flush(): void { $this->push->flushPayloads(); } }