|
16 | 16 | use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired;
|
17 | 17 | use OCP\AppFramework\Http\DataResponse;
|
18 | 18 | use OCP\AppFramework\OCSController;
|
| 19 | +use OCP\Config\ValueType; |
19 | 20 | use OCP\Exceptions\AppConfigUnknownKeyException;
|
20 | 21 | use OCP\IAppConfig;
|
21 | 22 | use OCP\IGroupManager;
|
@@ -130,19 +131,27 @@ public function setValue(string $app, string $key, string $value): DataResponse
|
130 | 131 | }
|
131 | 132 |
|
132 | 133 | $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 | + } |
137 | 146 | }
|
138 | 147 |
|
139 | 148 | /** @psalm-suppress InternalMethod */
|
140 | 149 | 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)), |
146 | 155 | default => $this->appConfig->setValueMixed($app, $key, $value),
|
147 | 156 | };
|
148 | 157 |
|
|
0 commit comments