Skip to content

Commit f04cc38

Browse files
committed
fix(files_reminders): Update cache when creating, updating, or deleting
Signed-off-by: Christopher Ng <chrng8@gmail.com>
1 parent 558386a commit f04cc38

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

apps/files_reminders/lib/Service/ReminderService.php

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,12 @@ public function getAll(?IUser $user = null) {
8888
*/
8989
public function createOrUpdate(IUser $user, int $fileId, DateTime $dueDate): bool {
9090
$now = new DateTime('now', new DateTimeZone('UTC'));
91-
try {
92-
$reminder = $this->reminderMapper->findDueForUser($user, $fileId);
93-
$reminder->setDueDate($dueDate);
94-
$reminder->setUpdatedAt($now);
95-
$this->reminderMapper->update($reminder);
96-
$this->cache->set("{$user->getUID()}-$fileId", $reminder);
97-
return false;
98-
} catch (DoesNotExistException $e) {
91+
$reminder = $this->getDueForUser($user, $fileId);
92+
if ($reminder === null) {
9993
$node = $this->root->getUserFolder($user->getUID())->getFirstNodeById($fileId);
10094
if (!$node) {
10195
throw new NodeNotFoundException();
10296
}
103-
// Create new reminder if no reminder is found
10497
$reminder = new Reminder();
10598
$reminder->setUserId($user->getUID());
10699
$reminder->setFileId($fileId);
@@ -111,27 +104,32 @@ public function createOrUpdate(IUser $user, int $fileId, DateTime $dueDate): boo
111104
$this->cache->set("{$user->getUID()}-$fileId", $reminder);
112105
return true;
113106
}
107+
$reminder->setDueDate($dueDate);
108+
$reminder->setUpdatedAt($now);
109+
$this->reminderMapper->update($reminder);
110+
$this->cache->set("{$user->getUID()}-$fileId", $reminder);
111+
return false;
114112
}
115113

116114
/**
117115
* @throws DoesNotExistException
118116
*/
119117
public function remove(IUser $user, int $fileId): void {
120-
$reminder = $this->reminderMapper->findDueForUser($user, $fileId);
121-
$this->reminderMapper->delete($reminder);
118+
$reminder = $this->getDueForUser($user, $fileId);
119+
$this->deleteReminder($reminder);
122120
}
123121

124122
public function removeAllForNode(Node $node): void {
125123
$reminders = $this->reminderMapper->findAllForNode($node);
126124
foreach ($reminders as $reminder) {
127-
$this->reminderMapper->delete($reminder);
125+
$this->deleteReminder($reminder);
128126
}
129127
}
130128

131129
public function removeAllForUser(IUser $user): void {
132130
$reminders = $this->reminderMapper->findAllForUser($user);
133131
foreach ($reminders as $reminder) {
134-
$this->reminderMapper->delete($reminder);
132+
$this->deleteReminder($reminder);
135133
}
136134
}
137135

@@ -163,6 +161,7 @@ public function send(Reminder $reminder): void {
163161
try {
164162
$this->notificationManager->notify($notification);
165163
$this->reminderMapper->markNotified($reminder);
164+
$this->cache->set("{$user->getUID()}-{$reminder->getFileId()}", $reminder);
166165
} catch (Throwable $th) {
167166
$this->logger->error($th->getMessage(), $th->getTrace());
168167
}
@@ -174,7 +173,12 @@ public function cleanUp(?int $limit = null): void {
174173
->modify('-1 day');
175174
$reminders = $this->reminderMapper->findNotified($buffer, $limit);
176175
foreach ($reminders as $reminder) {
177-
$this->reminderMapper->delete($reminder);
176+
$this->deleteReminder($reminder);
178177
}
179178
}
179+
180+
private function deleteReminder(Reminder $reminder): void {
181+
$this->reminderMapper->delete($reminder);
182+
$this->cache->set("{$reminder->getUserId()}-{$reminder->getFileId()}", false);
183+
}
180184
}

0 commit comments

Comments
 (0)