From 3de8a2f50ddb705a29e721c9040664cfb9319b69 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 21 Jan 2025 20:05:51 +0100 Subject: [PATCH] fix(TaskProcessing\Manager): Cache the result of parsing JSON Signed-off-by: Marcel Klehr --- lib/private/TaskProcessing/Manager.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index e2047be9c2c5a..1b1f717eacc76 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -77,6 +77,8 @@ class Manager implements IManager { private ?array $availableTaskTypes = null; private IAppData $appData; + private ?array $preferences = null; + public function __construct( private IConfig $config, private Coordinator $coordinator, @@ -725,10 +727,10 @@ public function getProviders(): array { 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; }