From 1db73da36bd883003810433686172be06115569b Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 12 Jan 2026 13:21:09 +0100 Subject: [PATCH 1/4] fix(TaskProcessing): Refactor TextToImage fallback Signed-off-by: Marcel Klehr --- lib/private/TaskProcessing/Manager.php | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index 5e58fe180939c..29c2c3725eaad 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -281,13 +281,18 @@ private function _getTextToImageProviders(): array { $oldProviders = $this->textToImageManager->getProviders(); $newProviders = []; foreach ($oldProviders as $oldProvider) { - $newProvider = new class($oldProvider, $this->appData) implements IProvider, ISynchronousProvider { + $newProvider = new class($oldProvider, $this->appData, $this->l10nFactory, $this->userManager) implements IProvider, ISynchronousProvider { private \OCP\TextToImage\IProvider $provider; private IAppData $appData; + private IFactory $l10nFactory; - public function __construct(\OCP\TextToImage\IProvider $provider, IAppData $appData) { + private IUserManager $userManager; + + public function __construct(\OCP\TextToImage\IProvider $provider, IAppData $appData, IFactory $l10nFactory, IUserManager $userManager) { $this->provider = $provider; $this->appData = $appData; + $this->l10nFactory = $l10nFactory; + $this->userManager = $userManager; } public function getId(): string { @@ -320,6 +325,21 @@ public function process(?string $userId, array $input, callable $reportProgress) } catch (\OCP\Files\NotFoundException) { $folder = $this->appData->newFolder('text2image'); } + if ($input['numberOfImages'] > 12) { + throw new UserFacingProcessingException( + 'numberOfImages cannot be greater than 12', + userFacingMessage: + $this->l10nFactory->get('core', $this->l10nFactory->getUserLanguage($this->userManager->get($userId))) + ->t('Cannot generate more than 12 images') + ); + } + if ($input['numberOfImages'] < 1) { + throw new UserFacingProcessingException( + 'numberOfImages must be greater than 0', + userFacingMessage: + $this->l10nFactory->get('core', $this->l10nFactory->getUserLanguage($this->userManager->get($userId))) + ->t('Cannot generate less than 1 image')); + } $resources = []; $files = []; for ($i = 0; $i < $input['numberOfImages']; $i++) { From 7b671226109175784a2ac74e647fda276dd88a2d Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 3 Feb 2026 09:17:32 +0100 Subject: [PATCH 2/4] Fix: Run cs:fix --- lib/private/TaskProcessing/Manager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index 29c2c3725eaad..929240255aa0e 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -330,7 +330,7 @@ public function process(?string $userId, array $input, callable $reportProgress) 'numberOfImages cannot be greater than 12', userFacingMessage: $this->l10nFactory->get('core', $this->l10nFactory->getUserLanguage($this->userManager->get($userId))) - ->t('Cannot generate more than 12 images') + ->t('Cannot generate more than 12 images') ); } if ($input['numberOfImages'] < 1) { From 702f25ae475f9a3935f3f0bab78e2dfe62f27be0 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Thu, 5 Feb 2026 17:31:17 +0100 Subject: [PATCH 3/4] fix: Use ProcessingException instead of UserFacingProcessing Exception which is not in nc < 33 Signed-off-by: Marcel Klehr --- lib/private/TaskProcessing/Manager.php | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index 929240255aa0e..0b22e762776d2 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -326,19 +326,14 @@ public function process(?string $userId, array $input, callable $reportProgress) $folder = $this->appData->newFolder('text2image'); } if ($input['numberOfImages'] > 12) { - throw new UserFacingProcessingException( - 'numberOfImages cannot be greater than 12', - userFacingMessage: - $this->l10nFactory->get('core', $this->l10nFactory->getUserLanguage($this->userManager->get($userId))) - ->t('Cannot generate more than 12 images') + throw new ProcessingException( + 'numberOfImages cannot be greater than 12' ); } if ($input['numberOfImages'] < 1) { - throw new UserFacingProcessingException( - 'numberOfImages must be greater than 0', - userFacingMessage: - $this->l10nFactory->get('core', $this->l10nFactory->getUserLanguage($this->userManager->get($userId))) - ->t('Cannot generate less than 1 image')); + throw new ProcessingException( + 'numberOfImages must be greater than 0' + ); } $resources = []; $files = []; From b87731227ad2c57cbd94550ce882ef813909ba89 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Thu, 19 Feb 2026 14:29:20 +0100 Subject: [PATCH 4/4] fix(TaskProcessing): Inject missing dependency Signed-off-by: Marcel Klehr --- lib/private/TaskProcessing/Manager.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index 0b22e762776d2..655142e49a259 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -36,6 +36,7 @@ use OCP\IConfig; use OCP\IL10N; use OCP\IServerContainer; +use OCP\IUserManager; use OCP\L10N\IFactory; use OCP\Lock\LockedException; use OCP\SpeechToText\ISpeechToTextProvider; @@ -280,8 +281,9 @@ public function getOutputShape(): array { private function _getTextToImageProviders(): array { $oldProviders = $this->textToImageManager->getProviders(); $newProviders = []; + $userManager = \OCP\Server::get(IUserManager::class); foreach ($oldProviders as $oldProvider) { - $newProvider = new class($oldProvider, $this->appData, $this->l10nFactory, $this->userManager) implements IProvider, ISynchronousProvider { + $newProvider = new class($oldProvider, $this->appData, $this->l10nFactory, $userManager) implements IProvider, ISynchronousProvider { private \OCP\TextToImage\IProvider $provider; private IAppData $appData; private IFactory $l10nFactory;