diff options
author | Julien Veyssier <julien-nc@posteo.net> | 2024-10-24 12:51:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-24 12:51:55 +0200 |
commit | 67fbce54078bd6abe5007f7f8f685a67f448a5d7 (patch) | |
tree | 51edc0a054232d5a12a03e3edc63d2fc72cb8088 | |
parent | f1684ff77ed063700dd94fe61d3b1176adf4867e (diff) | |
parent | 5362486ca910a8fb8c6a7756b6d778a2440accd6 (diff) | |
download | nextcloud-server-67fbce54078bd6abe5007f7f8f685a67f448a5d7.tar.gz nextcloud-server-67fbce54078bd6abe5007f7f8f685a67f448a5d7.zip |
Merge pull request #48863 from nextcloud/fix/noid/textprocessing-list-types
[TextProcessing] Fix: Also list types that are available in task processing
-rw-r--r-- | lib/private/TextProcessing/Manager.php | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/lib/private/TextProcessing/Manager.php b/lib/private/TextProcessing/Manager.php index 8d34b5fba01..fcb5fb31d74 100644 --- a/lib/private/TextProcessing/Manager.php +++ b/lib/private/TextProcessing/Manager.php @@ -44,6 +44,13 @@ class Manager implements IManager { /** @var ?IProvider[] */ private ?array $providers = null; + private static array $taskProcessingCompatibleTaskTypes = [ + FreePromptTaskType::class => TextToText::ID, + HeadlineTaskType::class => TextToTextHeadline::ID, + SummaryTaskType::class => TextToTextSummary::ID, + TopicsTaskType::class => TextToTextTopics::ID, + ]; + public function __construct( private IServerContainer $serverContainer, private Coordinator $coordinator, @@ -82,6 +89,14 @@ class Manager implements IManager { } public function hasProviders(): bool { + // check if task processing equivalent types are available + $taskTaskTypes = $this->taskProcessingManager->getAvailableTaskTypes(); + foreach (self::$taskProcessingCompatibleTaskTypes as $textTaskTypeClass => $taskTaskTypeId) { + if (isset($taskTaskTypes[$taskTaskTypeId])) { + return true; + } + } + $context = $this->coordinator->getRegistrationContext(); if ($context === null) { return false; @@ -97,6 +112,15 @@ class Manager implements IManager { foreach ($this->getProviders() as $provider) { $tasks[$provider->getTaskType()] = true; } + + // check if task processing equivalent types are available + $taskTaskTypes = $this->taskProcessingManager->getAvailableTaskTypes(); + foreach (self::$taskProcessingCompatibleTaskTypes as $textTaskTypeClass => $taskTaskTypeId) { + if (isset($taskTaskTypes[$taskTaskTypeId])) { + $tasks[$textTaskTypeClass] = true; + } + } + return array_keys($tasks); } @@ -110,15 +134,9 @@ class Manager implements IManager { public function runTask(OCPTask $task): string { // try to run a task processing task if possible $taskTypeClass = $task->getType(); - $taskProcessingCompatibleTaskTypes = [ - FreePromptTaskType::class => TextToText::ID, - HeadlineTaskType::class => TextToTextHeadline::ID, - SummaryTaskType::class => TextToTextSummary::ID, - TopicsTaskType::class => TextToTextTopics::ID, - ]; - if (isset($taskProcessingCompatibleTaskTypes[$taskTypeClass]) && isset($this->taskProcessingManager->getAvailableTaskTypes()[$taskProcessingCompatibleTaskTypes[$taskTypeClass]])) { + if (isset(self::$taskProcessingCompatibleTaskTypes[$taskTypeClass]) && isset($this->taskProcessingManager->getAvailableTaskTypes()[self::$taskProcessingCompatibleTaskTypes[$taskTypeClass]])) { try { - $taskProcessingTaskTypeId = $taskProcessingCompatibleTaskTypes[$taskTypeClass]; + $taskProcessingTaskTypeId = self::$taskProcessingCompatibleTaskTypes[$taskTypeClass]; $taskProcessingTask = new \OCP\TaskProcessing\Task( $taskProcessingTaskTypeId, ['input' => $task->getInput()], |