From d956e4a2ca6b48c1e539d50fd42f86b9e84f9921 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 21 Jan 2025 20:05:51 +0100 Subject: fix(TaskProcessing\Manager): Cache the result of parsing JSON Signed-off-by: Marcel Klehr --- lib/private/TaskProcessing/Manager.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'lib/private/TaskProcessing') diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index 4e9dc7fd24f..9439682642b 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -79,6 +79,7 @@ class Manager implements IManager { private ?array $availableTaskTypes = null; private IAppData $appData; + private ?array $preferences = null; private ICache $cache; public function __construct( @@ -731,10 +732,10 @@ class Manager implements IManager { public function getPreferredProvider(string $taskTypeId) { try { - $preferences = json_decode($this->config->getAppValue('core', 'ai.taskprocessing_provider_preferences', 'null'), associative: true, flags: JSON_THROW_ON_ERROR); + $this->preferences = $this->preferences ?? json_decode($this->config->getAppValue('core', 'ai.taskprocessing_provider_preferences', 'null'), associative: true, flags: JSON_THROW_ON_ERROR); $providers = $this->getProviders(); - if (isset($preferences[$taskTypeId])) { - $provider = current(array_values(array_filter($providers, fn ($provider) => $provider->getId() === $preferences[$taskTypeId]))); + if (isset($this->preferences[$taskTypeId])) { + $provider = current(array_values(array_filter($providers, fn ($provider) => $provider->getId() === $this->preferences[$taskTypeId]))); if ($provider !== false) { return $provider; } -- cgit v1.2.3