%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps/app_api/lib/Notifications/ |
| Current File : //www/varak.net/nextcloud.varak.net/apps/app_api/lib/Notifications/ExAppNotifier.php |
<?php
declare(strict_types=1);
namespace OCA\AppAPI\Notifications;
use InvalidArgumentException;
use OCA\AppAPI\AppInfo\Application;
use OCA\AppAPI\Service\ExAppService;
use OCP\IURLGenerator;
use OCP\L10N\IFactory;
use OCP\Notification\INotification;
use OCP\Notification\INotifier;
class ExAppNotifier implements INotifier {
public function __construct(
private readonly IFactory $factory,
private readonly IURLGenerator $url,
private readonly ExAppService $service,
private readonly IFactory $l10nFactory
) {
}
public function getID(): string {
return Application::APP_ID;
}
public function getName(): string {
return $this->factory->get(Application::APP_ID)->t('AppAPI ExApp notifier');
}
public function prepare(INotification $notification, string $languageCode): INotification {
$exApp = $this->service->getExApp($notification->getApp());
if ($exApp === null) {
throw new InvalidArgumentException();
}
if (!$exApp->getEnabled()) { // Only enabled ExApps can render notifications
throw new InvalidArgumentException('ExApp is disabled');
}
$l = $this->l10nFactory->get($notification->getApp(), $languageCode);
$parameters = $notification->getSubjectParameters();
if (isset($parameters['link']) && $parameters['link'] !== '') {
$notification->setLink($parameters['link']);
}
$notification->setIcon($this->url->getAbsoluteURL($this->url->imagePath(Application::APP_ID, 'app-dark.svg')));
if (isset($parameters['rich_subject']) && isset($parameters['rich_subject_params'])) {
$notification->setRichSubject($l->t($parameters['rich_subject']), $parameters['rich_subject_params']);
}
if (isset($parameters['rich_message']) && isset($parameters['rich_message_params'])) {
$notification->setRichMessage($l->t($parameters['rich_message']), $parameters['rich_message_params']);
}
return $notification;
}
}