diff options
Diffstat (limited to 'lib/private/Preview/WatcherConnector.php')
-rw-r--r-- | lib/private/Preview/WatcherConnector.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/private/Preview/WatcherConnector.php b/lib/private/Preview/WatcherConnector.php new file mode 100644 index 00000000000..c34dd1dde4d --- /dev/null +++ b/lib/private/Preview/WatcherConnector.php @@ -0,0 +1,41 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OC\Preview; + +use OC\SystemConfig; +use OCA\Files_Versions\Events\VersionRestoredEvent; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\Files\IRootFolder; +use OCP\Files\Node; + +class WatcherConnector { + public function __construct( + private IRootFolder $root, + private SystemConfig $config, + private IEventDispatcher $dispatcher, + ) { + } + + private function getWatcher(): Watcher { + return \OCP\Server::get(Watcher::class); + } + + public function connectWatcher(): void { + // Do not connect if we are not setup yet! + if ($this->config->getValue('instanceid', null) !== null) { + $this->root->listen('\OC\Files', 'postWrite', function (Node $node) { + $this->getWatcher()->postWrite($node); + }); + + $this->dispatcher->addListener(VersionRestoredEvent::class, function (VersionRestoredEvent $event) { + $this->getWatcher()->versionRollback(['node' => $event->getVersion()->getSourceFile()]); + }); + } + } +} |