feat(lexicon): set/get current preset from controller

Signed-off-by: Maxence Lange <maxence@artificial-owl.com>

feat(lexicon): set/get current preset from controller
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
pull/54558/head
Maxence Lange 9 months ago
parent 5ab16f46f9
commit a81d58970c
  1. 3
      apps/settings/appinfo/routes.php
  2. 24
      apps/settings/lib/Controller/PresetController.php
  3. 6
      core/Command/Config/Preset.php
  4. 14
      lib/private/Config/PresetManager.php

@ -56,7 +56,10 @@ return [
['name' => 'TwoFactorSettings#index', 'url' => '/settings/api/admin/twofactorauth', 'verb' => 'GET' , 'root' => ''],
['name' => 'TwoFactorSettings#update', 'url' => '/settings/api/admin/twofactorauth', 'verb' => 'PUT' , 'root' => ''],
['name' => 'AISettings#update', 'url' => '/settings/api/admin/ai', 'verb' => 'PUT' , 'root' => ''],
['name' => 'Preset#getPreset', 'url' => '/settings/preset', 'verb' => 'GET' , 'root' => ''],
['name' => 'Preset#getCurrentPreset', 'url' => '/settings/preset/current', 'verb' => 'GET' , 'root' => ''],
['name' => 'Preset#setCurrentPreset', 'url' => '/settings/preset/current', 'verb' => 'POST' , 'root' => ''],
['name' => 'Help#help', 'url' => '/settings/help/{mode}', 'verb' => 'GET', 'defaults' => ['mode' => ''] , 'root' => ''],

@ -13,6 +13,8 @@ use OC\Config\PresetManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\OpenAPI;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSBadRequestException;
use OCP\Config\Lexicon\Preset;
use OCP\IRequest;
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
@ -26,8 +28,26 @@ class PresetController extends Controller {
parent::__construct($appName, $request);
}
public function getPreset(): DataResponse {
return new DataResponse($this->presetManager->retrieveLexiconPreset());
public function getCurrentPreset(): DataResponse {
return new DataResponse($this->presetManager->getLexiconPreset()->name);
}
public function setCurrentPreset(string $presetName): DataResponse {
foreach (Preset::cases() as $case) {
if ($case->name === $presetName) {
$this->presetManager->setLexiconPreset($case);
return $this->getCurrentPreset();
}
}
throw new OCSBadRequestException('Invalid preset name provided');
}
public function getPreset(): DataResponse {
return new DataResponse(
[
'preset' => $this->presetManager->retrieveLexiconPreset(),
'apps' => $this->presetManager->retrieveLexiconPresetApps()
]
);
}
}

@ -30,6 +30,7 @@ class Preset extends Base {
->setDescription('Select a config preset')
->addArgument('preset', InputArgument::OPTIONAL, 'Preset to use for all unset config values', '')
->addOption('list', '', InputOption::VALUE_NONE, 'display available preset')
->addOption('apps', '', InputOption::VALUE_NONE, 'return list of enabled/disabled apps when switching preset')
->addOption('compare', '', InputOption::VALUE_NONE, 'compare preset');
}
@ -40,6 +41,11 @@ class Preset extends Base {
return self::SUCCESS;
}
if ($input->getOption('apps')) {
$this->writeArrayInOutputFormat($input, $output, $this->presetManager->retrieveLexiconPresetApps());
return self::SUCCESS;
}
if ($input->getOption('compare')) {
$list = $this->presetManager->retrieveLexiconPreset();
if ($input->getOption('output') === 'plain') {

@ -212,6 +212,20 @@ class PresetManager {
}
}
/**
* return list of apps that are enabled/disabled when switching current Preset
*
* @return array<string, array{disabled: list<string>, enabled: list<string>}>
*/
public function retrieveLexiconPresetApps(): array {
$apps = [];
foreach (Preset::cases() as $case) {
$apps[$case->name] = $this->getPresetApps($case);
}
return $apps;
}
/**
* get listing of enabled/disabled app from Preset
*

Loading…
Cancel
Save