diff --git a/apps/federation/lib/TrustedServers.php b/apps/federation/lib/TrustedServers.php index c27529bd12cb6..b110be24aff12 100644 --- a/apps/federation/lib/TrustedServers.php +++ b/apps/federation/lib/TrustedServers.php @@ -31,6 +31,7 @@ use OCP\AppFramework\Http; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; +use OCP\DB\Exception; use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\Events\TrustedServerRemovedEvent; use OCP\HintException; @@ -59,6 +60,9 @@ class TrustedServers { private IEventDispatcher $dispatcher; private ITimeFactory $timeFactory; + /** @var list|null */ + private ?array $trustedServersCache = null; + public function __construct( DbHandler $dbHandler, IClientService $httpClientService, @@ -122,14 +126,20 @@ public function removeServer(int $id): void { $server = $this->dbHandler->getServerById($id); $this->dbHandler->removeServer($id); $this->dispatcher->dispatchTyped(new TrustedServerRemovedEvent($server['url_hash'])); + } /** * Get all trusted servers - * @return list + * + * @return list + * @throws Exception */ public function getServers() { - return $this->dbHandler->getAllServer(); + if ($this->trustedServersCache === null) { + $this->trustedServersCache = $this->dbHandler->getAllServer(); + } + return $this->trustedServersCache; } /**