diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index ad5bf132445..afaa723c200 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -73,6 +73,8 @@ class Manager implements IManager { public const LEGACY_PREFIX_TEXTTOIMAGE = 'legacy:TextToImage:'; public const LEGACY_PREFIX_SPEECHTOTEXT = 'legacy:SpeechToText:'; + public const TASK_TYPES_CACHE_KEY = 'available_task_types_v3'; + /** @var list|null */ private ?array $providers = null; @@ -108,6 +110,7 @@ class Manager implements IManager { private IUserManager $userManager, private IUserSession $userSession, ICacheFactory $cacheFactory, + private IFactory $l10nFactory, ) { $this->appData = $appDataFactory->get('core'); $this->distributedCache = $cacheFactory->createDistributed('task_processing::'); @@ -813,12 +816,15 @@ class Manager implements IManager { } public function getAvailableTaskTypes(bool $showDisabled = false, ?string $userId = null): array { + // We cache by language, because some task type fields are translated + $cacheKey = self::TASK_TYPES_CACHE_KEY . ':' . $this->l10nFactory->findLanguage(); + // userId will be obtained from the session if left to null if (!$this->checkGuestAccess($userId)) { return []; } if ($this->availableTaskTypes === null) { - $cachedValue = $this->distributedCache->get('available_task_types_v2'); + $cachedValue = $this->distributedCache->get($cacheKey); if ($cachedValue !== null) { $this->availableTaskTypes = unserialize($cachedValue); } @@ -864,7 +870,7 @@ class Manager implements IManager { } $this->availableTaskTypes = $availableTaskTypes; - $this->distributedCache->set('available_task_types_v2', serialize($this->availableTaskTypes), 60); + $this->distributedCache->set($cacheKey, serialize($this->availableTaskTypes), 60); } diff --git a/tests/lib/TaskProcessing/TaskProcessingTest.php b/tests/lib/TaskProcessing/TaskProcessingTest.php index d463a5e4c61..ceb45d04a00 100644 --- a/tests/lib/TaskProcessing/TaskProcessingTest.php +++ b/tests/lib/TaskProcessing/TaskProcessingTest.php @@ -1,4 +1,5 @@ get(IUserSession::class), \OC::$server->get(ICacheFactory::class), + \OC::$server->get(IFactory::class), ); } @@ -1264,6 +1267,7 @@ class TaskProcessingTest extends \Test\TestCase { \OC::$server->get(IUserManager::class), \OC::$server->get(IUserSession::class), \OC::$server->get(ICacheFactory::class), + \OC::$server->get(IFactory::class), ); }