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

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2022-07-01 16:47:53 +0300
committerJoas Schilling <coding@schilljs.com>2022-07-01 16:47:53 +0300
commit30cd60e3d992bda09b6a631a554c7cec0b65f4a9 (patch)
treebcfc59c6d5417bd80ca55b0cab890cd11fea7622
parent82a0613c27c18aba184304bcf59ff06b666fc53d (diff)
Only remove the job when expiration is "done"
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r--lib/BackgroundJob/ExpireChatMessages.php19
-rw-r--r--lib/Service/RoomService.php1
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/BackgroundJob/ExpireChatMessages.php b/lib/BackgroundJob/ExpireChatMessages.php
index b64e3aee0..d66e50e5c 100644
--- a/lib/BackgroundJob/ExpireChatMessages.php
+++ b/lib/BackgroundJob/ExpireChatMessages.php
@@ -26,16 +26,25 @@ declare(strict_types=1);
namespace OCA\Talk\BackgroundJob;
use OCA\Talk\Chat\ChatManager;
+use OCA\Talk\Exceptions\RoomNotFoundException;
+use OCA\Talk\Manager;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJob;
+use OCP\BackgroundJob\IJobList;
use OCP\BackgroundJob\TimedJob;
class ExpireChatMessages extends TimedJob {
+ private IJobList $jobList;
+ private Manager $roomManager;
private ChatManager $chatManager;
public function __construct(ITimeFactory $timeFactory,
+ IJobList $jobList,
+ Manager $roomManager,
ChatManager $chatManager) {
parent::__construct($timeFactory);
+ $this->jobList = $jobList;
+ $this->roomManager = $roomManager;
$this->chatManager = $chatManager;
// Every 5 minutes
@@ -48,5 +57,15 @@ class ExpireChatMessages extends TimedJob {
*/
protected function run($argument): void {
$this->chatManager->deleteExpiredMessages($argument['room_id']);
+
+ try {
+ $room = $this->roomManager->getRoomById($argument['room_id']);
+ if ($room->getMessageExpiration() === 0) {
+ // FIXME check if there are still messages to expire in the database
+ $this->jobList->remove(ExpireChatMessages::class, $argument);
+ }
+ } catch (RoomNotFoundException $e) {
+ $this->jobList->remove(ExpireChatMessages::class, $argument);
+ }
}
}
diff --git a/lib/Service/RoomService.php b/lib/Service/RoomService.php
index 515e03e2b..82ef69543 100644
--- a/lib/Service/RoomService.php
+++ b/lib/Service/RoomService.php
@@ -556,7 +556,6 @@ class RoomService {
$this->jobList->add(ExpireChatMessages::class, ['room_id' => $room->getId()]);
$this->addMessageExpirationSystemMessage($room, $participant, $seconds, 'message_expiration_enabled');
} else {
- $this->jobList->remove(ExpireChatMessages::class, ['room_id' => $room->getId()]);
$this->addMessageExpirationSystemMessage($room, $participant, $seconds, 'message_expiration_disabled');
}