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

github.com/nextcloud/mail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2020-03-26 18:21:54 +0300
committerChristoph Wurst <christoph@winzerhof-wurst.at>2020-03-26 18:41:14 +0300
commit38ad0d54866c81b391906da32a7f2fb8bfda1b48 (patch)
tree0f2de58f800b152b2f6c0d84dd53f0b54b76cb66 /lib/Listener
parentf36b56e9d195af4203304ed712b263d01f1e67eb (diff)
Update the message cache when a message is flagged
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'lib/Listener')
-rw-r--r--lib/Listener/MessageCacheUpdaterListener.php (renamed from lib/Listener/MessageDeletedCacheUpdaterListener.php)36
1 files changed, 26 insertions, 10 deletions
diff --git a/lib/Listener/MessageDeletedCacheUpdaterListener.php b/lib/Listener/MessageCacheUpdaterListener.php
index 4b6bab10a..bd710adb1 100644
--- a/lib/Listener/MessageDeletedCacheUpdaterListener.php
+++ b/lib/Listener/MessageCacheUpdaterListener.php
@@ -27,28 +27,44 @@ namespace OCA\Mail\Listener;
use OCA\Mail\Db\MessageMapper;
use OCA\Mail\Events\MessageDeletedEvent;
+use OCA\Mail\Events\MessageFlaggedEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
+use OCP\ILogger;
-class MessageDeletedCacheUpdaterListener implements IEventListener {
+class MessageCacheUpdaterListener implements IEventListener {
/** @var MessageMapper */
private $mapper;
- public function __construct(MessageMapper $mapper) {
+ /** @var ILogger */
+ private $logger;
+
+ public function __construct(MessageMapper $mapper,
+ ILogger $logger) {
$this->mapper = $mapper;
+ $this->logger = $logger;
}
public function handle(Event $event): void {
- if (!($event instanceof MessageDeletedEvent)) {
- // Unrelated
- return;
- }
+ if ($event instanceof MessageFlaggedEvent) {
+ $messages = $this->mapper->findByUids($event->getMailbox(), [$event->getUid()]);
+ $message = reset($messages);
+
+ if ($message === false) {
+ $this->logger->warning("Flagged message is not cached");
+ return;
+ }
- $this->mapper->deleteByUid(
- $event->getMailbox(),
- $event->getMessageId()
- );
+ $message->setFlag($event->getFlag(), $event->isSet());
+
+ $this->mapper->update($message);
+ } elseif ($event instanceof MessageDeletedEvent) {
+ $this->mapper->deleteByUid(
+ $event->getMailbox(),
+ $event->getMessageId()
+ );
+ }
}
}