diff options
author | Marcel Klehr <mklehr@gmx.net> | 2023-10-24 14:20:45 +0200 |
---|---|---|
committer | Marcel Klehr <mklehr@gmx.net> | 2023-12-19 12:31:21 +0100 |
commit | 928fee8ab47841cbc970a1e3b5176eb902fe748b (patch) | |
tree | 73b2a33a2ec09ac53497f186834991736d536373 /lib/private/SpeechToText | |
parent | d8381acf861202bed821e92f3cf8647db87a0efe (diff) | |
download | nextcloud-server-928fee8ab47841cbc970a1e3b5176eb902fe748b.tar.gz nextcloud-server-928fee8ab47841cbc970a1e3b5176eb902fe748b.zip |
enh(SpeechToText): Allow providers to declare a dynamic ID instead of using className
this allows AppAPI to register anonymous classes as SpeechToText providers
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Diffstat (limited to 'lib/private/SpeechToText')
-rw-r--r-- | lib/private/SpeechToText/SpeechToTextManager.php | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/private/SpeechToText/SpeechToTextManager.php b/lib/private/SpeechToText/SpeechToTextManager.php index bdd04ad3651..520700cf198 100644 --- a/lib/private/SpeechToText/SpeechToTextManager.php +++ b/lib/private/SpeechToText/SpeechToTextManager.php @@ -39,6 +39,7 @@ use OCP\IServerContainer; use OCP\PreConditionNotMetException; use OCP\SpeechToText\ISpeechToTextManager; use OCP\SpeechToText\ISpeechToTextProvider; +use OCP\SpeechToText\ISpeechToTextProviderWithId; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use Psr\Log\LoggerInterface; @@ -117,8 +118,13 @@ class SpeechToTextManager implements ISpeechToTextManager { $json = $this->config->getAppValue('core', 'ai.stt_provider', ''); if ($json !== '') { - $className = json_decode($json, true); - $provider = current(array_filter($providers, fn ($provider) => $provider::class === $className)); + $classNameOrId = json_decode($json, true); + $provider = current(array_filter($providers, function ($provider) use ($classNameOrId) { + if ($provider instanceof ISpeechToTextProviderWithId) { + return $provider->getId() === $classNameOrId; + } + return $provider::class === $classNameOrId; + })); if ($provider !== false) { $providers = [$provider]; } |