Skip to content

Commit 295f050

Browse files
committed
feat(lexicon): get value type from lexicon
Signed-off-by: Maxence Lange <[email protected]>
1 parent a7a8738 commit 295f050

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

apps/provisioning_api/lib/Controller/AppConfigController.php

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired;
1717
use OCP\AppFramework\Http\DataResponse;
1818
use OCP\AppFramework\OCSController;
19+
use OCP\Config\ValueType;
1920
use OCP\Exceptions\AppConfigUnknownKeyException;
2021
use OCP\IAppConfig;
2122
use OCP\IGroupManager;
@@ -130,19 +131,27 @@ public function setValue(string $app, string $key, string $value): DataResponse
130131
}
131132

132133
$type = null;
133-
try {
134-
$configDetails = $this->appConfig->getDetails($app, $key);
135-
$type = $configDetails['type'];
136-
} catch (AppConfigUnknownKeyException) {
134+
135+
// checking expected type from lexicon
136+
$keyDetails = $this->appConfig->getKeyDetails($app, $key);
137+
if (array_key_exists('valueType', $keyDetails)) {
138+
$type = $keyDetails['valueType'];
139+
} else {
140+
// if no details from lexicon, get from eventual current value in database
141+
try {
142+
$configDetails = $this->appConfig->getDetails($app, $key);
143+
$type = $configDetails['type'];
144+
} catch (AppConfigUnknownKeyException) {
145+
}
137146
}
138147

139148
/** @psalm-suppress InternalMethod */
140149
match ($type) {
141-
IAppConfig::VALUE_BOOL => $this->appConfig->setValueBool($app, $key, (bool)$value),
142-
IAppConfig::VALUE_FLOAT => $this->appConfig->setValueFloat($app, $key, (float)$value),
143-
IAppConfig::VALUE_INT => $this->appConfig->setValueInt($app, $key, (int)$value),
144-
IAppConfig::VALUE_STRING => $this->appConfig->setValueString($app, $key, $value),
145-
IAppConfig::VALUE_ARRAY => $this->appConfig->setValueArray($app, $key, \json_decode($value, true)),
150+
IAppConfig::VALUE_BOOL, ValueType::BOOL => $this->appConfig->setValueBool($app, $key, (bool)$value),
151+
IAppConfig::VALUE_FLOAT, ValueType::FLOAT => $this->appConfig->setValueFloat($app, $key, (float)$value),
152+
IAppConfig::VALUE_INT, ValueType::INT => $this->appConfig->setValueInt($app, $key, (int)$value),
153+
IAppConfig::VALUE_STRING, ValueType::STRING => $this->appConfig->setValueString($app, $key, $value),
154+
IAppConfig::VALUE_ARRAY, ValueType::ARRAY => $this->appConfig->setValueArray($app, $key, \json_decode($value, true)),
146155
default => $this->appConfig->setValueMixed($app, $key, $value),
147156
};
148157

0 commit comments

Comments
 (0)