Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/notifications.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2019-12-09 11:36:52 +0300
committerJoas Schilling <coding@schilljs.com>2019-12-09 11:36:52 +0300
commitbee149021b1441b1e821a1360605ff5cb83a61e6 (patch)
tree4ed35948d0f67c3a88fcafba03c18adb30dd55ca /lib
parent2a2dcd927416098d20fcbf1f78142c8219015ef8 (diff)
Do not send push notifications when nothing was deleted
The iOS App always sent an API request when it deleted a notification. By accident this was also done when it did the delete caused by a delete-push Until now the notificiations app always sent a delete-push in case of an API call. Meaning this circled all the time. So now we only send a push if something was actually deleted. Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Controller/EndpointController.php12
-rw-r--r--lib/Handler.php12
2 files changed, 15 insertions, 9 deletions
diff --git a/lib/Controller/EndpointController.php b/lib/Controller/EndpointController.php
index 97c657a..1cde7ef 100644
--- a/lib/Controller/EndpointController.php
+++ b/lib/Controller/EndpointController.php
@@ -164,8 +164,10 @@ class EndpointController extends OCSController {
return new DataResponse(null, Http::STATUS_NOT_FOUND);
}
- $this->handler->deleteById($id, $this->getCurrentUser());
- $this->push->pushDeleteToDevice($this->getCurrentUser(), $id);
+ $deleted = $this->handler->deleteById($id, $this->getCurrentUser());
+ if ($deleted) {
+ $this->push->pushDeleteToDevice($this->getCurrentUser(), $id);
+ }
return new DataResponse();
}
@@ -175,8 +177,10 @@ class EndpointController extends OCSController {
* @return DataResponse
*/
public function deleteAllNotifications(): DataResponse {
- $this->handler->deleteByUser($this->getCurrentUser());
- $this->push->pushDeleteToDevice($this->getCurrentUser(), 0);
+ $deletedSomething = $this->handler->deleteByUser($this->getCurrentUser());
+ if ($deletedSomething) {
+ $this->push->pushDeleteToDevice($this->getCurrentUser(), 0);
+ }
return new DataResponse();
}
diff --git a/lib/Handler.php b/lib/Handler.php
index d8c2451..864f435 100644
--- a/lib/Handler.php
+++ b/lib/Handler.php
@@ -117,15 +117,16 @@ class Handler {
* Delete the notification of a given user
*
* @param string $user
+ * @return bool
*/
- public function deleteByUser(string $user) {
+ public function deleteByUser(string $user): bool {
$notification = $this->manager->createNotification();
try {
$notification->setUser($user);
} catch (\InvalidArgumentException $e) {
- return;
+ return false;
}
- $this->delete($notification);
+ return !empty($this->delete($notification));
}
/**
@@ -133,13 +134,14 @@ class Handler {
*
* @param int $id
* @param string $user
+ * @return bool
*/
- public function deleteById(int $id, string $user) {
+ public function deleteById(int $id, string $user): bool {
$sql = $this->connection->getQueryBuilder();
$sql->delete('notifications')
->where($sql->expr()->eq('notification_id', $sql->createNamedParameter($id)))
->andWhere($sql->expr()->eq('user', $sql->createNamedParameter($user)));
- $sql->execute();
+ return (bool) $sql->execute();
}
/**