%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/text/lib/Service/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/text/lib/Service/InitialStateProvider.php |
<?php
/**
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Text\Service;
use OCP\AppFramework\Services\IInitialState;
use OCP\TaskProcessing\IManager;
use OCP\Translation\ITranslationManager;
class InitialStateProvider {
private const ASSISTANT_TASK_TYPES = [
'core:text2text',
'core:text2text:formalization',
'core:text2text:headline',
'core:text2text:reformulation',
'core:text2text:simplification',
'core:text2text:summary',
'core:text2text:topics',
];
public function __construct(
private IInitialState $initialState,
private ConfigService $configService,
private ITranslationManager $translationManager,
private IManager $taskProcessingManager,
private ?string $userId
) {
}
public function provideState(): void {
$this->initialState->provideInitialState(
'workspace_available',
$this->configService->isRichWorkspaceAvailable()
);
$this->initialState->provideInitialState(
'workspace_enabled',
$this->configService->isRichWorkspaceEnabledForUser($this->userId)
);
$this->initialState->provideInitialState(
'default_file_extension',
$this->configService->getDefaultFileExtension()
);
$this->initialState->provideInitialState(
'rich_editing_enabled',
$this->configService->isRichEditingEnabled()
);
$this->initialState->provideInitialState(
'translation_can_detect',
$this->translationManager->canDetectLanguage()
);
$this->initialState->provideInitialState(
'translation_languages',
$this->translationManager->getLanguages()
);
$filteredTypes = array_filter($this->taskProcessingManager->getAvailableTaskTypes(), static function (string $taskType) {
return in_array($taskType, self::ASSISTANT_TASK_TYPES, true);
}, ARRAY_FILTER_USE_KEY);
$this->initialState->provideInitialState(
'taskprocessing',
array_map(static function (string $typeId, array $taskType) {
$taskType['id'] = $typeId;
return $taskType;
}, array_keys($filteredTypes), array_values($filteredTypes)),
);
$this->initialState->provideInitialState(
'notify_push',
$this->configService->isNotifyPushSyncEnabled(),
);
}
public function provideFileId(int $fileId): void {
$this->initialState->provideInitialState('file_id', $fileId);
}
public function provideFile(array $fileData): void {
$this->initialState->provideInitialState('file', $fileData);
}
public function provideDirectEditToken(string $token): void {
$this->initialState->provideInitialState('directEditingToken', $token);
}
}