]> source.dussan.org Git - nextcloud-server.git/commitdiff
enh: pass params in subject
authorChristopher Ng <chrng8@gmail.com>
Wed, 9 Aug 2023 17:20:32 +0000 (10:20 -0700)
committerAndy Scherzinger <info@andy-scherzinger.de>
Thu, 10 Aug 2023 10:28:19 +0000 (12:28 +0200)
Signed-off-by: Christopher Ng <chrng8@gmail.com>
(cherry picked from commit 86db2d7f15f8507e9c563507491b7dba3c63e932)

apps/files_reminders/lib/Notification/Notifier.php
apps/files_reminders/lib/Service/ReminderService.php

index c528aa521b177d23f0d65d9bc9a2b4f86400862a..ce46aafb86c2cf99e35a7752145a464d64dc417f 100644 (file)
@@ -28,10 +28,8 @@ namespace OCA\FilesReminders\Notification;
 
 use InvalidArgumentException;
 use OCA\FilesReminders\AppInfo\Application;
-use OCA\FilesReminders\Exception\NodeNotFoundException;
-use OCA\FilesReminders\Service\ReminderService;
-use OCP\AppFramework\Db\DoesNotExistException;
 use OCP\Files\FileInfo;
+use OCP\Files\IRootFolder;
 use OCP\IURLGenerator;
 use OCP\L10N\IFactory;
 use OCP\Notification\AlreadyProcessedException;
@@ -43,7 +41,7 @@ class Notifier implements INotifier {
        public function __construct(
                protected IFactory $l10nFactory,
                protected IURLGenerator $urlGenerator,
-               protected ReminderService $reminderService,
+               protected IRootFolder $root,
        ) {}
 
        public function getID(): string {
@@ -67,18 +65,15 @@ class Notifier implements INotifier {
 
                switch ($notification->getSubject()) {
                        case 'reminder-due':
-                               $reminderId = (int)$notification->getObjectId();
-                               try {
-                                       $reminder = $this->reminderService->get($reminderId);
-                               } catch (DoesNotExistException $e) {
-                                       throw new AlreadyProcessedException();
-                               }
+                               $params = $notification->getSubjectParameters();
+                               $fileId = $params['fileId'];
 
-                               try {
-                                       $node = $reminder->getNode();
-                               } catch (NodeNotFoundException $e) {
+                               $nodes = $this->root->getUserFolder($notification->getUser())->getById($fileId);
+                               if (empty($nodes)) {
                                        throw new InvalidArgumentException();
                                }
+                               $node = reset($nodes);
+
                                $path = rtrim($node->getPath(), '/');
                                if (strpos($path, '/' . $notification->getUser() . '/files/') === 0) {
                                        // Remove /user/files/...
index 010f458e8721e7433e9688dd269a5a13ccbb668a..4bfa943cb04842cf84fc1c1b404ffc0653b19eac 100644 (file)
@@ -155,7 +155,9 @@ class ReminderService {
                        ->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('files', 'folder.svg')))
                        ->setUser($user->getUID())
                        ->setObject('reminder', (string)$reminder->getId())
-                       ->setSubject('reminder-due')
+                       ->setSubject('reminder-due', [
+                               'fileId' => $reminder->getFileId(),
+                       ])
                        ->setDateTime($reminder->getDueDate());
 
                try {